<?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>165196</bug_id>
          
          <creation_ts>2016-11-30 08:02:41 -0800</creation_ts>
          <short_desc>Some scroll snapping tests are still flaky</short_desc>
          <delta_ts>2020-03-20 09:23:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=148408</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=148407</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=167561</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=167661</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=167321</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=172148</see_also>
          <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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>jlewis3</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1254760</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-11-30 08:02:41 -0800</bug_when>
    <thetext>So far, this includes three tests:
- tiled-drawing/scrolling/scroll-snap/scroll-snap-iframe.html
- tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-slow-horizontal.html
- tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-slow-vertical.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1254828</commentid>
    <comment_count>1</comment_count>
      <attachid>295729</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-11-30 10:13:03 -0800</bug_when>
    <thetext>Created attachment 295729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1255060</commentid>
    <comment_count>2</comment_count>
      <attachid>295789</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-11-30 16:49:42 -0800</bug_when>
    <thetext>Created attachment 295789
Another attempt to observe flaky failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331650</commentid>
    <comment_count>3</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-07-24 09:44:01 -0700</bug_when>
    <thetext>*** Bug 172148 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631948</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-19 18:46:19 -0700</bug_when>
    <thetext>scroll-snap-mandatory-mainframe-slow-vertical.html is still flakey.

The scroll snap timer fires on the scrolling thread with the right offset, but the main thread hasn&apos;t caught up yet by the time we remove the &quot;scroll snap&quot; reason on the wheel event monitor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631990</commentid>
    <comment_count>5</comment_count>
      <attachid>394064</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-19 21:22:00 -0700</bug_when>
    <thetext>Created attachment 394064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631992</commentid>
    <comment_count>6</comment_count>
      <attachid>394064</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-03-19 21:29:05 -0700</bug_when>
    <thetext>Comment on attachment 394064
Patch

r=me with the UNUSED_PARAM to fix the iOS build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631995</commentid>
    <comment_count>7</comment_count>
      <attachid>394066</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-19 21:36:42 -0700</bug_when>
    <thetext>Created attachment 394066
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632011</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-19 23:03:39 -0700</bug_when>
    <thetext>Committed r258753: &lt;https://trac.webkit.org/changeset/258753&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 394066.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632012</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-19 23:04:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/60671382&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1632120</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-03-20 09:23:58 -0700</bug_when>
    <thetext>*** Bug 209293 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295729</attachid>
            <date>2016-11-30 10:13:03 -0800</date>
            <delta_ts>2020-03-19 21:22:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165196-20161130101234.patch</filename>
            <type>text/plain</type>
            <size>4354245</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5MTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNkNTJlM2JiNzQyODA2
ODUyYzUyNWIwYTJiMDI5OTY2NWJlODFmMi4uOWU0MzgxZDlhNGVmOTYxNzMwNDI2OGQ3MzFkZDMz
NGMyMDY5Y2Y3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyMSBAQAorMjAxNi0xMS0zMCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIHNjcm9s
bCBzbmFwcGluZyB0ZXN0cyBhcmUgc3RpbGwgZmxha3kgYWZ0ZXIgcjIwOTA3MAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MTk2CisKKyAgICAgICAg
Tm90ZTogTm90IGFuIGFjdHVhbCBwYXRjaC4gSnVzdCB0cnlpbmcgdG8gaW5kdWNlIGZsYWt5IHRl
c3QgZmFpbHVyZXMgd2l0aCBsb2dnaW5nIG9uIEVXUy4KKworICAgICAgICBUZXN0czogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTAuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTEuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwLmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MDAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwMS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAyLmh0bWwKKyAg
ICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMDMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwNC5odG1sCisgICAgICAgICAgICAg
ICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTA1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwNy5odG1sCisg
ICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTA4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDkuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTExLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExMS5odG1sCisg
ICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTEyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTMuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTExNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTYuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTExNy5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE4Lmh0bWwKKyAgICAgICAgICAg
ICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMTkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjAuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTEyMS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIyLmh0bWwKKyAgICAgICAgICAg
ICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMjMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTI1Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xMjYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyNy5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTI4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzLmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xMzAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzMS5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTMyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzNC5odG1s
CisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTM1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzYuaHRtbAorICAgICAgICAg
ICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTEzNy5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzkuaHRt
bAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE0Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDAuaHRtbAorICAgICAgICAg
ICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE0MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDMuaHRt
bAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE0NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ1Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xNDYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0Ny5odG1sCisgICAgICAgICAgICAgICB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ4Lmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNDkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xNTAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1MS5odG1sCisgICAgICAgICAgICAgICB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUyLmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1NC5odG1sCisgICAgICAg
ICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMTU1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTYuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1Ny5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTU4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTkuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE2Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjAuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2MS5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTYyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjMuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE2NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTY1Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjYu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTE2Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTY4Lmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNjkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzAu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTE3MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTcyLmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNzMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3NC5odG1sCisgICAgICAgICAgICAgICB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTc1
Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNzYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Ny5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTc4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzkuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4
Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xODAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4MS5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTgyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODMuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4
NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTg1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODYuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE4Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTg4Lmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
ODkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTAuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE5MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkyLmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
OTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk1Lmh0bWwKKyAg
ICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xOTYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5Ny5odG1sCisgICAgICAgICAgICAg
ICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTk4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTIwLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDAuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIw
MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjAyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDMuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTIwNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA1Lmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
MDYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwNy5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA4Lmh0bWwKKyAg
ICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yMDkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxLmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
MTAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjEyLmh0bWwKKyAg
ICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yMTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNC5odG1sCisgICAgICAgICAgICAg
ICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjE1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNy5odG1sCisg
ICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjE4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTkuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMS5odG1sCisg
ICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjIyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjMuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIyNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjYuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIyNy5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI4Lmh0bWwKKyAgICAgICAgICAg
ICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yMjkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzAuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIzMS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMyLmh0bWwKKyAgICAgICAgICAg
ICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yMzMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM1Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMzYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzNy5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjM4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNDAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0MS5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjQyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0NC5odG1s
CisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjQ1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDYuaHRtbAorICAgICAgICAg
ICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTI0Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDkuaHRt
bAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTAuaHRtbAorICAgICAgICAg
ICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTI1MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjUyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTMuaHRt
bAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI1NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU1Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNTYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1Ny5odG1sCisgICAgICAgICAgICAgICB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU4Lmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yNTkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNjAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2MS5odG1sCisgICAgICAgICAgICAgICB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjYyLmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yNjMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2NC5odG1sCisgICAgICAg
ICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjY1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjYuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2Ny5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjY4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjkuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI3Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzAuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3MS5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjcyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzMuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI3NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc1Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzYu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI3Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc4Lmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yNzkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODAu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI4MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjgyLmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yODMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4NC5odG1sCisgICAgICAgICAgICAgICB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg1
Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yODYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4Ny5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjg4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODkuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5
Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yOTAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5MS5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjkyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTMuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5
NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjk1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTYuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI5Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjk4Lmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
OTkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwLmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zMDAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwMS5odG1sCisgICAgICAgICAgICAgICB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAy
Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMDMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwNC5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzA1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDYuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMw
Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzA4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDkuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTMxLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTAuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMx
MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzEyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTMuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTMxNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE1Lmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
MTYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxNy5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE4Lmh0bWwKKyAg
ICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMTkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyLmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
MjAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyMS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIyLmh0bWwKKyAg
ICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMjMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyNC5odG1sCisgICAgICAgICAgICAg
ICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzI1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyNy5odG1sCisg
ICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzI4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjkuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTMzLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzMS5odG1sCisg
ICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzMyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzMuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTMzNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzYuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTMzNy5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM4Lmh0bWwKKyAgICAgICAgICAg
ICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMzkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDAuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM0MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQyLmh0bWwKKyAgICAgICAgICAg
ICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zNDMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ1Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zNDYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0Ny5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzQ4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zNTAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1MS5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzUyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1NC5odG1s
CisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzU1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTYuaHRtbAorICAgICAgICAg
ICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM1Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzU4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTkuaHRt
bAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM2Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjAuaHRtbAorICAgICAgICAg
ICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM2MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjMuaHRt
bAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM2NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY1Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zNjYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2Ny5odG1sCisgICAgICAgICAgICAgICB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY4Lmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zNjkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zNzAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3MS5odG1sCisgICAgICAgICAgICAgICB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzcyLmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zNzMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3NC5odG1sCisgICAgICAg
ICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzc1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzYuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Ny5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzc4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzkuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODAuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4MS5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzgyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODMuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM4NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzg1Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODYu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTM4Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzg4Lmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zODkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTAu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTM5MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkyLmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zOTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5NC5odG1sCisgICAgICAgICAgICAgICB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk1
Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zOTYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5Ny5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzk4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTkuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQwLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDAuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQwMS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAyLmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDMu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQwNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA1Lmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00MDYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwNy5odG1sCisgICAgICAgICAgICAgICB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA4
Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00MDkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxLmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00MTAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMS5odG1sCisgICAgICAgICAgICAgICB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDEy
Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00MTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNC5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDE1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTYuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQx
Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDE4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTkuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjAuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQy
MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDIyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjMuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQyNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI1Lmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
MjYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNy5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI4Lmh0bWwKKyAg
ICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00MjkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzLmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
MzAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzMS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMyLmh0bWwKKyAg
ICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00MzMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzNC5odG1sCisgICAgICAgICAgICAg
ICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDM1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzNy5odG1sCisg
ICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDM4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzkuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ0Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0MS5odG1sCisg
ICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDQyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDMuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ0NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDYuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ0Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ4Lmh0bWwKKyAgICAgICAgICAg
ICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00NDkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTAuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ1MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDUyLmh0bWwKKyAgICAgICAgICAg
ICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00NTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU1Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NTYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Ny5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDU4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NjAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2MS5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDYyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2NC5odG1s
CisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDY1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjYuaHRtbAorICAgICAgICAg
ICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ2Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjkuaHRt
bAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQ3Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzAuaHRtbAorICAgICAgICAg
ICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ3MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDcyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzMuaHRt
bAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQ3NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc1Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NzYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3Ny5odG1sCisgICAgICAgICAgICAgICB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc4Lmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00NzkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00ODAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4MS5odG1sCisgICAgICAgICAgICAgICB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDgyLmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00ODMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4NC5odG1sCisgICAgICAg
ICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDg1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODYuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Ny5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDg4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODkuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ5Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTAuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5MS5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDkyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTMuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ5NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk1Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTYu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ5Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk4Lmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00OTkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUwLmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS01MDAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUxLmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS01Mi5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU0Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS01NS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTYuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTU3Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01OC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTkuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYwLmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02MS5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNjIuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYzLmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS02NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjUuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY2Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS02Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjguaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTY5Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03MC5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNzEuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcyLmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03My5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNzQuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc1Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS03Ni5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzcuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc4Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS03OS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOC5odG1sCisgICAgICAgICAgICAg
ICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
ODAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgxLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04Mi5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtODMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg0Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04NS5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtODYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg3Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS04OC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtODkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTkwLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05MS5odG1sCisgICAgICAgICAgICAg
ICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
OTIuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkzLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05NC5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtOTUuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk2Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05Ny5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtOTguaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk5Lmh0bWwKKworICAgICAg
ICAqIHBhZ2UvV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldo
ZWVsRXZlbnRUZXN0VHJpZ2dlcjo6ZGVmZXJUZXN0c0ZvclJlYXNvbik6CisgICAgICAgIChXZWJD
b3JlOjpXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbik6
CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OnRyaWdnZXJUZXN0VGlt
ZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25hcEFuaW1hdG9yU3Rh
dGUubW06CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0ZWFyZG93bkFuaW1hdGlv
bkZvclN0YXRlKToKKwogMjAxNi0xMS0zMCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgc3BlY3VsYXRpdmUgY21ha2UgYnVpbGRmaXgg
YWZ0ZXIgcjIwOTA3MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RUcmln
Z2VyLmNwcAppbmRleCAzOTg4N2YxMzUyMjk0MTJlM2YwMzUyM2RmNGI1OTdiY2UzNzYwYzc1Li5l
N2M0ZGRiMmQ4Y2Y1YmY0N2UyYmM2MGIwM2IwZWI2MGM4MmNmYzA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0VHJpZ2dlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuY3BwCkBAIC03MCw2ICs3MCw5IEBAIHZv
aWQgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpkZWZlclRlc3RzRm9yUmVhc29uKFNjcm9sbGFibGVB
cmVhSWRlbnRpZmllciBpZGVudGlmCiAgICAgaWYgKGl0ID09IG1fZGVmZXJUZXN0VHJpZ2dlclJl
YXNvbnMuZW5kKCkpCiAgICAgICAgIGl0ID0gbV9kZWZlclRlc3RUcmlnZ2VyUmVhc29ucy5hZGQo
aWRlbnRpZmllciwgc3RkOjpzZXQ8RGVmZXJUZXN0VHJpZ2dlclJlYXNvbj4oKSkuaXRlcmF0b3I7
CiAgICAgCisgICAgaWYgKHJlYXNvbiA9PSBEZWZlclRlc3RUcmlnZ2VyUmVhc29uOjpTY3JvbGxT
bmFwSW5Qcm9ncmVzcykKKyAgICAgICAgV1RGTG9nQWx3YXlzKCI8V1A+OiBbJS4zZl0gPj4+IERl
ZmVycmluZyB0ZXN0IHRyaWdnZXIgZHVlIHRvIHNjcm9sbCBzbmFwLiIsIE1vbm90b25pY1RpbWU6
Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CisgICAgCiAgICAgTE9HKFdoZWVs
RXZlbnRUZXN0VHJpZ2dlcnMsICIgICAgICAoPSkgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpkZWZl
clRlc3RzRm9yUmVhc29uOiBpZD0lcCwgcmVhc29uPSVkIiwgaWRlbnRpZmllciwgcmVhc29uKTsK
ICAgICBpdC0+dmFsdWUuaW5zZXJ0KHJlYXNvbik7CiB9CkBAIC04MCw2ICs4Myw5IEBAIHZvaWQg
V2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpyZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24oU2Nyb2xs
YWJsZUFyZWFJZGVudGlmaWVyCiAgICAgYXV0byBpdCA9IG1fZGVmZXJUZXN0VHJpZ2dlclJlYXNv
bnMuZmluZChpZGVudGlmaWVyKTsKICAgICBpZiAoaXQgPT0gbV9kZWZlclRlc3RUcmlnZ2VyUmVh
c29ucy5lbmQoKSkKICAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChyZWFzb24gPT0gRGVm
ZXJUZXN0VHJpZ2dlclJlYXNvbjo6U2Nyb2xsU25hcEluUHJvZ3Jlc3MpCisgICAgICAgIFdURkxv
Z0Fsd2F5cygiPFdQPjogWyUuM2ZdIDw8PCBEb25lIGRlZmVycmluZyB0ZXN0IHRyaWdnZXIgZHVl
IHRvIHNjcm9sbCBzbmFwLiIsIE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2No
KCkudmFsdWUoKSk7CiAKICAgICBMT0coV2hlZWxFdmVudFRlc3RUcmlnZ2VycywgIiAgICAgICg9
KSBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbjogaWQ9
JXAsIHJlYXNvbj0lZCIsIGlkZW50aWZpZXIsIHJlYXNvbik7CiAgICAgaXQtPnZhbHVlLmVyYXNl
KHJlYXNvbik7CkBAIC0xMjYsOCArMTMyLDExIEBAIHZvaWQgV2hlZWxFdmVudFRlc3RUcmlnZ2Vy
Ojp0cmlnZ2VyVGVzdFRpbWVyRmlyZWQoKQogICAgIG1fdGVzdFRyaWdnZXJUaW1lci5zdG9wKCk7
CiAKICAgICBMT0coV2hlZWxFdmVudFRlc3RUcmlnZ2VycywgIiAgV2hlZWxFdmVudFRlc3RUcmln
Z2VyOjp0cmlnZ2VyVGVzdFRpbWVyRmlyZWQ6IEZJUklORyBURVNUIik7Ci0gICAgaWYgKGZ1bmN0
aW9uQ2FsbGJhY2spCisgICAgaWYgKGZ1bmN0aW9uQ2FsbGJhY2spIHsKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCI8V1A+OiBbJS4zZl0gKioqIEZJUklORyBURVNUIFRSSUdHRVIgQ0FMTEJBQ0sgKioq
IiwgTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCI8V1A+OiAiKTsKICAgICAgICAgZnVuY3Rpb25DYWxsYmFjaygp
OworICAgIH0KIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5tbQppbmRleCA3ZTIwMTgxNjc1ZjA2MTk0ZTBi
OTMxMGFhYzg1NTc5MjIwMGFjNjY2Li4yN2UwYWRkMTdkMjMzYWVhY2Q3MGQ0MjIyNjkzNTMyMTU4
MGZlNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxT
bmFwQW5pbWF0b3JTdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
Y3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5tbQpAQCAtMzYsNiArMzYsMjAgQEAgc3RhdGljIGlubGlu
ZSBmbG9hdCBwcm9qZWN0ZWRJbmVydGlhbFNjcm9sbERpc3RhbmNlKGZsb2F0IGluaXRpYWxXaGVl
bERlbHRhKQogewogICAgIHJldHVybiBpbmVydGlhbFNjcm9sbFByZWRpY3Rpb25GYWN0b3IgKiBp
bml0aWFsV2hlZWxEZWx0YTsKIH0KKyAgICAKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogc3Rh
dGVUb1N0cmluZyhTY3JvbGxTbmFwU3RhdGUgc3RhdGUpCit7CisgICAgc3dpdGNoIChzdGF0ZSkg
eworICAgIGNhc2UgU2Nyb2xsU25hcFN0YXRlOjpTbmFwcGluZzoKKyAgICAgICAgcmV0dXJuICJT
bmFwcGluZyI7CisgICAgY2FzZSBTY3JvbGxTbmFwU3RhdGU6OkdsaWRpbmc6CisgICAgICAgIHJl
dHVybiAiR2xpZGluZyI7CisgICAgY2FzZSBTY3JvbGxTbmFwU3RhdGU6OlVzZXJJbnRlcmFjdGlv
bjoKKyAgICAgICAgcmV0dXJuICJVc2VySW50ZXJhY3Rpb24iOworICAgIGNhc2UgU2Nyb2xsU25h
cFN0YXRlOjpEZXN0aW5hdGlvblJlYWNoZWQ6CisgICAgICAgIHJldHVybiAiRGVzdGluYXRpb25S
ZWFjaGVkIjsKKyAgICB9Cit9CiAKIHZvaWQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRyYW5z
aXRpb25Ub1NuYXBBbmltYXRpb25TdGF0ZShjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBj
b25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgcGFnZVNjYWxlLCBjb25zdCBGbG9h
dFBvaW50JiBpbml0aWFsT2Zmc2V0KQogewpAQCAtNTgsNiArNzIsOCBAQCB2b2lkIFNjcm9sbFNu
YXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNuYXBTdGF0ZSBz
dGF0ZSwgY29ucwogICAgIG1fbW9tZW50dW1DYWxjdWxhdG9yID0gU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpjcmVhdGUodmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNl
dCwgRmxvYXRQb2ludCh0YXJnZXRPZmZzZXRYLCB0YXJnZXRPZmZzZXRZKSwgaW5pdGlhbERlbHRh
LCBpbml0aWFsVmVsb2NpdHkpOwogICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93
KCk7CiAgICAgbV9jdXJyZW50U3RhdGUgPSBzdGF0ZTsKKworICAgIFdURkxvZ0Fsd2F5cygiPFdQ
PjogWyUuM2ZdIFRyYW5zaXRpb25lZCBzY3JvbGwgc25hcCBzdGF0ZTogJXMiLCBNb25vdG9uaWNU
aW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCksIHN0YXRlVG9TdHJpbmcoc3Rh
dGUpKTsKIH0KIAogdm9pZCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dHJhbnNpdGlvblRvVXNl
ckludGVyYWN0aW9uU3RhdGUoKQpAQCAtNzksNiArOTUsOCBAQCB2b2lkIFNjcm9sbFNuYXBBbmlt
YXRvclN0YXRlOjp0ZWFyZG93bkFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNuYXBTdGF0ZSBzdGF0
ZSkKICAgICBtX21vbWVudHVtQ2FsY3VsYXRvciA9IG51bGxwdHI7CiAgICAgbV9zdGFydFRpbWUg
PSBNb25vdG9uaWNUaW1lKCk7CiAgICAgbV9jdXJyZW50U3RhdGUgPSBzdGF0ZTsKKworICAgIFdU
RkxvZ0Fsd2F5cygiPFdQPjogWyUuM2ZdIFRyYW5zaXRpb25lZCBzY3JvbGwgc25hcCBzdGF0ZTog
JXMiLCBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCksIHN0
YXRlVG9TdHJpbmcoc3RhdGUpKTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxTbmFwQW5pbWF0b3JT
dGF0ZTo6Y3VycmVudEFuaW1hdGVkU2Nyb2xsT2Zmc2V0KGJvb2wmIGlzQW5pbWF0aW9uQ29tcGxl
dGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNzQzZmY5Y2IzMGQyMzZmZGI4MjU5MTM1NDBlYjQzZGQ5Njk0ZGUzYy4uNDY2Mzc3YzRm
NDJmNzQ3YjYxMzNmZGMzMjcyNTExZWE1ODkxYWYyOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTExLTMwICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgc2Ny
b2xsIHNuYXBwaW5nIHRlc3RzIGFyZSBzdGlsbCBmbGFreSBhZnRlciByMjA5MDcwCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUxOTYKKworICAgICAg
ICBOb3RlOiBOb3QgYW4gYWN0dWFsIHBhdGNoLiBKdXN0IHRyeWluZyB0byBpbmR1Y2UgZmxha3kg
dGVzdCBmYWlsdXJlcyB3aXRoIGxvZ2dpbmcgb24gRVdTLgorCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKToKKwogMjAxNi0xMS0yOSAgQ2FybG9zIEFsYmVydG8gTG9wZXogUGVy
ZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbTGludXhdIHJ1bi1iZW5jaG1hcmsg
c2hvdWxkIGJlIGFibGUgdG8gZXhlY3V0ZSB0aGUgYmVuY2htYXJrcyB3aXRoIG1vcmUgYnJvd3Nl
cnMuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAppbmRleCBmODE5ODJjNmJmOGQyOWE5
YjEyNjFmM2IyZmNmYWIwYjJiZjBmYzg5Li5mNTM2OWVjOWU0NDg3ZjQyYmRjZTVkYTBhYWU5ZTZh
MDhmYWFkMGYyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKQEAgLTM3LDYgKzM3
LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0TWVudUl0ZW0uaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tNdXRhYmxlRGljdGlvbmFyeS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS051bWJlci5o
PgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RSIHsKQEAgLTQ1Myw2ICs0NTQsOCBAQCBzdGF0aWMgdWlu
dDY0X3QgY2dFdmVudE1vbWVudHVtUGhhc2VGcm9tU3RyaW5nKEpTU3RyaW5nUmVmIHBoYXNlU3Ry
KQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhpbnQgeCwgaW50IHksIEpTU3RyaW5nUmVmIHBoYXNlU3RyLCBKU1N0
cmluZ1JlZiBtb21lbnR1bVN0cikKIHsKKyAgICBXVEZMb2dBbHdheXMoIjxXUD46IFslLjNmXSAq
KiogU2ltdWxhdGluZyB3aGVlbCBldmVudCglZCwgJWQsICVzLCAlcykgKioqIiwgTW9ub3Rvbmlj
VGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpLCB4LCB5LCB0b1NURCh0b1dL
KHBoYXNlU3RyKSkuY19zdHIoKSwgdG9TVEQodG9XSyhtb21lbnR1bVN0cikpLmNfc3RyKCkpOwor
ICAgIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1l
KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsK
ICAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3Nh
Z2VCb2R5KEFkb3B0V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CiAgICAgCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggOGU0NDM2NDcwOTcxYTM5YmU0MmY5NTQwMjJkOWM2ZGZlYTRlOTkyOS4uNGQzNzk2ZGJlYjFh
MzdiMmQ2YzBmYWRmYzc3ZDk3ZDU5NGIxMmY2OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMTUgQEAKIDIw
MTYtMTEtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKKyAgICAg
ICAgU29tZSBzY3JvbGwgc25hcHBpbmcgdGVzdHMgYXJlIHN0aWxsIGZsYWt5IGFmdGVyIHIyMDkw
NzAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTE5
NgorCisgICAgICAgIE5vdGU6IE5vdCBhbiBhY3R1YWwgcGF0Y2guIEp1c3QgdHJ5aW5nIHRvIGlu
ZHVjZSBmbGFreSB0ZXN0IGZhaWx1cmVzIHdpdGggbG9nZ2luZyBvbiBFV1MuCisKKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0wLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEuaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEw
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MDAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAwLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAxLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAyLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xMDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA0Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xMDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA1Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xMDYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA2Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMDctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA3
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTA4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTA5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTExMC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTExLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTExMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTExMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTExMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE0LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTExNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE1LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExNS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE2LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExNi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE3LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExNy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE4
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExOC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTE5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExOS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTEyMC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjAuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTEyMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjEuaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTEyMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTEyMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjMuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEyNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjQuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTEyNS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjUu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyNi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MjYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyNy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMjcuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyOC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xMjguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyOS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xMjkuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTEzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzAtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTMwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzEtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTMxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTMyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTMzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzYt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM2Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MzctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM3Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMzgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM4Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xMzktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM5Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTQwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0MC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTQxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0MS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTQyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0Mi5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTQzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0My5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0
NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTE0NS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE0Ni5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE0Ny5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ4LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE0OC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ5LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTE0OS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1MC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNTAuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1MS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNTEuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1Mi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1My1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTMuaHRtbDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1NC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTQuaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1
NS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTE1Ni1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTYuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE1Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTcuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE1OC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTguaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE1OS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTkuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTE2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xNjAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYwLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNjEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYxLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNjItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYy
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTYzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTY0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMTY1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjYtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTY2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTY3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjgtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTY4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjktZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTY5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTcwLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3MC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTcxLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTcyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTcz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3My5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTc0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3NC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTc1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3NS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMTc2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Ni5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTc3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Ny5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTc4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3OC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTc5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3OS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTguaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTE4MC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODAu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
ODEuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4Mi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xODIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4My1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xODMuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4NC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xODQuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4NS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xODUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4Ni1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xODYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4Ny1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xODcuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4OC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xODguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4OS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODkuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTAtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTEt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkxLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
OTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkyLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xOTMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xOTQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xOTUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk1Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xOTYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk2Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xOTctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk3Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xOTgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk4Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xOTktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk5
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIw
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjAwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjA0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjA1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDYtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjA2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDctZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjA3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDgtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDktZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjEw
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjExLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjEyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjEzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjE0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjE1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjE2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNi5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjE3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjE4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIx
OC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjE5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIxOS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMjAuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yMjEuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yMjIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMjMuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yMjQuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yMjUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjcuaHRtbDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyOC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjguaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIy
OS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjkuaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yMzAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMwLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMzEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMxLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yMzItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMyLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yMzMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMzQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM0Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yMzUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM1Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yMzYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM2
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjM3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjM4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjM5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQwLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI0MC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQxLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI0MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI0Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI0My5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ0LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ1LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0NS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ2LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0Ni5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ3
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0Ny5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjQ4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0OC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjQ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0OS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI1MC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTAuaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI1MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTEuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI1Mi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTIuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI1My1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTMuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI1NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTQu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1NS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
NTUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1Ni1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yNTYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNTcuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1OC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yNTguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1OS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yNTkuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjAtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjYwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjEtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjYxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjItZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjYyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjYzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY1Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
NjYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY2Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yNjctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY3Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNjgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY4Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yNjktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY5Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yNy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjcwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3MC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjcxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3MS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjcyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3Mi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjczLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3
My5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI3NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTI3NS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI3Ni5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc3LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI3Ny5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc4LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI3OC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc5LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI3OS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjgtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4MC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yODAuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4MS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODEuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4Mi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4My1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODMuaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4
NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI4NS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTI4Ni1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODYuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI4Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODcuaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI4OC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODguaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI4OS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODkuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yOTAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjkwLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yOTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjkx
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjkyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjkzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjk0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjk1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTYtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjk2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTctZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjk3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTgtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjk4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTktZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjk5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDAtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDEtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAyLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
MDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA0Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zMDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA1Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zMDYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA2Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMDctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA3Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zMDgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA4Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zMDktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA5Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzEwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMx
MC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzExLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTMxMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTMxMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMxMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE0LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTMxNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE1LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTMxNS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE2LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMxNi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE3LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTMxNy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE4LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxOC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE5LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxOS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyMC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjAuaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMy
MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjEuaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTMyMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTMyMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMyNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjQuaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTMyNS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTMyNi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjYuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMyNy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjcuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTMyOC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjgu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyOS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
MjkuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTMzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzMwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzMxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzMyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzMzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzM0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzM1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzYtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzM2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzctZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzgtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzkt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM5Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzQwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0MC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzQxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0MS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzQyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0Mi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzQzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0My5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzQ0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0NC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzQ1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0NS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzQ2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0Ni5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0
Ny5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTM0OC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM0OS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1MC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zNTAuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1MS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNTEuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1Mi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zNTIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1My1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zNTMuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1NC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNTQuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1NS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1Ni1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1Ny1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTcuaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1
OC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTguaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTM1OS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTkuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zNjAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYwLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zNjEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYxLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNjItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYyLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zNjMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zNjQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY0Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNjUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY1
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzY2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzY3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzY4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjktZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzY5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzcwLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM3MC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzcxLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM3MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzcyLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTM3Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzczLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3My5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc1LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3NS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc2
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Ni5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
Mzc3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Ny5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzc4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3OC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzc5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3OS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzguaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTM4MC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODAuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM4MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODEuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM4Mi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODIuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTM4My1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODMu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
ODQuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4NS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zODUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4Ni1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zODYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zODcuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4OC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zODguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4OS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zODkuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTAtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzkwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTEtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzkxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTItZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk0Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
OTUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk1Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zOTYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk2Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zOTctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk3Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zOTgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk4Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zOTktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk5Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MDAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAwLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00MDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAxLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00MDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAy
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDA0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDA1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDYtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDA2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDA3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDgtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDA4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDktZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDA5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDEwLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDExLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDEyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDEz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDE0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDE1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDE2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDE3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDE4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxOC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDE5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxOS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDIuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQyMC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjAu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
MjEuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00MjIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MjMuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00MjQuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00MjUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MjYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00MjcuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyOC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00MjguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyOS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjkuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzAtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzEt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMxLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
MzItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMyLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00MzMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MzQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00MzUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM1Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00MzYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM2Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MzctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM3Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00MzgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM4Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00MzktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM5
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ0MC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ0MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ0Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ0My5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ0NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ1LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQ0NS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ2LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ0Ni5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ3LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0Ny5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ4LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0OC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ5LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0OS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDUuaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1
MC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTAuaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ1MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTEuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ1Mi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTIuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ1My1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTMuaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ1NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ1NS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTUuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQ1Ni1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTYuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTcu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1OC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
NTguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1OS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00NTkuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDYwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjEtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDYxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDYyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDYzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDY0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDY1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjYtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjctZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00Njgt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY4Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
NjktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY5Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00Ny5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDcwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3MC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDcxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3MS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDcyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3Mi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDczLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3My5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDc0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3NC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDc1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3NS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDc2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3
Ni5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ3Ny5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ3OC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ3OS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDgtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4MC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00ODAuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4MS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00ODEuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Mi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00ODIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4My1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00ODMuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4NC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODQuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4NS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Ni1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODYuaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4
Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODcuaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ4OC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODguaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ4OS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODkuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00OTAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDkwLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00OTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDkxLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00OTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDkyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00OTMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDkzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00OTQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDk1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDk2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDk3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTgtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDk4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTktZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDk5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUwLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTUwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01MDAtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNTAwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01MS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS01MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNTIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTUzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01NC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS01NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNTUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU2LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01Ny1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01Ny5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTgtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU5LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYwLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02MS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02NC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjUuaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY2
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY2Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02
Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02Ny5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NjgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjguaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTY5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY5Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS03LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcuaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTcwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcwLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS03MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03MS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNzItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTczLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTczLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS03NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03NC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNzUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTc2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc2Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS03Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03Ny5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNzgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzguaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTc5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc5Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS04LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTguaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTgwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgwLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS04MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04MS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtODItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtODIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTgzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS04NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04NC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtODUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtODUuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTg2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg2Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS04Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04Ny5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtODgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtODguaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTg5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg5Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS05LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTkwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkwLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS05MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05MS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtOTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTIu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05
NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
OTUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTk2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS05Ny5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtOTguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTk5Lmh0bWw6IEFkZGVkLgorCisyMDE2LTExLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCiAgICAgICAgIFVucmV2aWV3ZWQsIG1hcmsgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLmh0bWwgYXMgZmxha3kK
IAogICAgICAgICBJdCBzZWVtcyB0aGVyZSBhcmUgYWRkaXRpb25hbCBjYXVzZXMgb2YgdGVzdCBm
YWlsdXJlcyB3aGVuIHNjcm9sbGluZyBpbiBpZnJhbWVzLiB3ZWJraXQub3JnL2IvMTY1MTk2IHdp
bGwgYmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0wLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0w
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTAtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0wLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0wLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jp
em9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
IDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAg
ICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54
ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQu
b2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9u
LnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYg
KGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxl
bWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBw
b3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9u
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFj
ayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiAr
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAg
ICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdl
IGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlk
ZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVk
ICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlk
ZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25M
b2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewor
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpv
bnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAg
ICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAg
ICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250
YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpv
bnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9
InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwi
ICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMS5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEuaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTEwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFk
N2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMC5odG1sIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAg
ICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRp
Y2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2Nr
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAg
ICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1l
bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zm
c2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAg
ICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJi
b2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAg
ZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2
aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIu
IEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8v
IE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAg
ICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
Y3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9p
bnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFt
ZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29u
dGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVu
dHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxv
YWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAz
MDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxU
YXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1h
aW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+
CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xMDAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwMC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDli
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDAtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEwMC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwMC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTAwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jp
em9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
IDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAg
ICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54
ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQu
b2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9u
LnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYg
KGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxl
bWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBw
b3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9u
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFj
ayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiAr
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAg
ICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdl
IGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlk
ZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVk
ICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlk
ZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25M
b2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewor
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpv
bnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAg
ICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAg
ICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250
YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpv
bnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9
InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwi
ICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTEwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAxLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTEwMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTAxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4
Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMDEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAg
ICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisK
KyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBh
cmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBs
b2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0
c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5l
eHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3Rl
ZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVk
UG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAw
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4n
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xh
c3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFt
ZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMTAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDIuaHRtbCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJj
ZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwMi5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTEwMy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwMy5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEw
My5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAzLmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA0LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwNC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTA0Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMDQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTA1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xMDUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTEwNS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDYt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwNi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMDYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwNi5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEwNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA2Lmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwNy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTA3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEw
Ny1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA3Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTA3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDcuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MDgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA4LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDguaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwOC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xMDktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwOS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTEwOS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwOS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTA5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTExLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEu
aHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEuaHRt
bApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAg
ICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9z
aXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAg
ICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNu
YXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBm
b3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIp
OworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
dmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUg
aUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBw
b2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9u
KQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24g
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5k
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
ICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRp
b246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6
b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9
InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEwLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMTAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNi
ZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEw
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTAuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMTAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZl
YTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExMC5odG1sCkBAIC0wLDAgKzEs
MTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9Owor
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVs
ZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0
aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9w
OworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRv
IHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxU
b3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9y
IHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25s
b2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7
IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
dmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3Zl
cnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEx
MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1
M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTEtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExMS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExMS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTExLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
KworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBw
b3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9
IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQ
YXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9
IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhw
ZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFr
ZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9s
bGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
IEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgp
OyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4
OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZy
YW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTExMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTEyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMTIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTEzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTEzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MTMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMTMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEx
My5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTExNC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMTQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExNC5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTExNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE0Lmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExNS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTE1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExNS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE1Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE1Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTE2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTYtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE2LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xMTYuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTYuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTExNi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xMTctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExNy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMTctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTExNy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExNy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTE3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExOC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTE4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTExOC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE4Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTE4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTguaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE5LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xMTktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE5LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTkuaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MTkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExOS5odG1sCkBAIC0wLDAgKzEsMTYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1l
bnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9u
LnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVy
dGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRp
Y2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4
YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTEyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jp
em9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
IDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAg
ICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54
ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQu
b2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9u
LnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYg
KGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxl
bWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBw
b3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9u
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFj
ayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiAr
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAg
ICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdl
IGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlk
ZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVk
ICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlk
ZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25M
b2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewor
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpv
bnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAg
ICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAg
ICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250
YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpv
bnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9
InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwi
ICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTEyMC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIwLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTEyMC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTIwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4
Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMjAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAg
ICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisK
KyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBh
cmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBs
b2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0
c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5l
eHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3Rl
ZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVk
UG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAw
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4n
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xh
c3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFt
ZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIxLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMjEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMTIxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjEuaHRtbCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMjEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJj
ZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyMS5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTEyMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyMi5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEy
Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIyLmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyMy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTIzLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMjMuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTI0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTI0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xMjQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTEyNC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyNS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMjUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyNS5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEyNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTI1Lmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyNi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTI2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEy
Ni1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTI2Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTI2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjYuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTI3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MjctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTI3LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyNy5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xMjgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyOC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTEyOC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyOC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTI4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTEyOS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTI5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEyOS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgor
IAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTI5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTI5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MjkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2
YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAg
ICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVu
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2Nh
dGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lk
ZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQg
c25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBv
c2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9z
aXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUn
LCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9
Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5o
dG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjli
ZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTEzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMy5odG1sIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTEzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMy5odG1sCkBAIC0wLDAgKzEs
MTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9Owor
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVs
ZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0
aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9w
OworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRv
IHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxU
b3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9y
IHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25s
b2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7
IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
dmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3Zl
cnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEz
MC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1
M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzAtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzMC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzMC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTMwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
KworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBw
b3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9
IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQ
YXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9
IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhw
ZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFr
ZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9s
bGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
IEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgp
OyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4
OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZy
YW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTEzMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTMxLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTMxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTMxLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMzEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTMyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTMyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MzIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMzIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEz
Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEzMy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMzMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzMy5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTEzMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTMzLmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzNC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTM0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzNC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM0Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTM1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM1LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xMzUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEzNS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xMzYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzNi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMzYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTEzNi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTM2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzNy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTM3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTEzNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM3Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTM3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzcuaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM4LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xMzgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM4LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzguaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MzguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzOC5odG1sCkBAIC0wLDAgKzEsMTYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1l
bnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9u
LnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVy
dGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRp
Y2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzOS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzktZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzOS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzOS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTM5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAg
IC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKwor
ICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3Np
dGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVs
ZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJl
bnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBv
c2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAg
ICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVsw
XSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50
ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBv
c2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNu
YXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0
ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBz
dXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkg
PSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVk
IChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4
cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
aG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+
CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+
CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhv
cml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
aG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIg
Y2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1l
Lmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMTQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAg
ICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisK
KyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBh
cmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBs
b2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0
c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5l
eHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3Rl
ZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVk
UG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAw
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4n
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xh
c3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFt
ZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQwLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNDAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMTQwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDAuaHRtbCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xNDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJj
ZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0MC5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDEtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE0MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDEtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0MS5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0
MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQxLmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0Mi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTQyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNDIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTQzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNDMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE0My5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0NC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xNDQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0NC5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE0NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ0Lmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0NS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTQ1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0
NS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ1Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTQ1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDUuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
NDYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ2LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDYuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDYuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0Ni5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xNDctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0Ny1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTE0Ny5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0Ny5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTQ3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTE0OC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE0OC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgor
IAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTQ4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
NDguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2
YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAg
ICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVu
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2Nh
dGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lk
ZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQg
c25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBv
c2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9z
aXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUn
LCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9
Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5o
dG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ5LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNDktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJi
OWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTQ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDkuaHRtbCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNDkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIz
NDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0OS5odG1sCkBAIC0w
LDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxh
eTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFy
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9
IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hp
bGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9
IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBi
YWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50Lgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVs
YXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgw
ODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
KworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBw
b3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9
IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQ
YXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9
IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhw
ZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFr
ZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9s
bGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
IEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgp
OyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4
OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZy
YW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTE1MC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUwLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1MC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTUwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUwLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xNTAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTUxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTUxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
NTEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1
MS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE1Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xNTItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1Mi5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE1Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUyLmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1My1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTUzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1My1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUzLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTMuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTU0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTU0LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNTQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE1NC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xNTUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1NS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNTUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE1NS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1NS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTU1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1Ni1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTU2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE1Ni1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTU2Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTU2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTYuaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTU3LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNTctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTU3LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTcuaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
NTcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1Ny5odG1sCkBAIC0wLDAgKzEsMTYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1l
bnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9u
LnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVy
dGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRp
Y2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1OC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTgtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1OC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1OC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTU4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAg
IC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKwor
ICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3Np
dGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVs
ZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJl
bnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBv
c2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAg
ICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVsw
XSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50
ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBv
c2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNu
YXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0
ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBz
dXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkg
PSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVk
IChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4
cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
aG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+
CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+
CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhv
cml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
aG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIg
Y2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1l
Lmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE1OS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTU5LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1OS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBA
QAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTU5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTU5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5
ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNTkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJw
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHls
ZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwor
ICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0
aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVt
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRU
b3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVu
dCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9m
ZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAp
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHBy
b3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2Ug
ICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1
c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFt
ZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8g
dGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBl
eHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4
cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
YmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRp
diBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAg
IDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdl
dCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1h
aW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGlj
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUy
ZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNi5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTE2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNi5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjAtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE2MC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjAtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2MC5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2
MC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYwLmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2MS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYxLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2MS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTYxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYxLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNjEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTYyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNjIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE2Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2My1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xNjMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2My5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE2My5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYzLmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2NC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTY0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2
NC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTY0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTY0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjQuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTY1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
NjUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTY1LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2NS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xNjYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2Ni1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTE2Ni5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2Ni5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTY2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTE2Ny1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTY3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE2Ny1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgor
IAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTY3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTY3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
NjcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2
YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAg
ICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVu
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2Nh
dGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lk
ZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQg
c25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBv
c2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9z
aXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUn
LCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9
Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5o
dG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTY4LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNjgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJi
OWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTY4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjguaHRtbCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNjguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIz
NDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2OC5odG1sCkBAIC0w
LDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxh
eTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFy
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9
IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hp
bGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9
IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBi
YWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50Lgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVs
YXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE2OS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdl
ODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjktZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2
ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2OS5odG1sIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2OS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTY5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVy
dGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRp
b24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCAr
Ii4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBw
b2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNh
bFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwt
bWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTE3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDli
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTcwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTcwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
NzAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNzAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3
MC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzEtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE3MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xNzEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3MS5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE3MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTcxLmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTcyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Mi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTcyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTcyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTczLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTczLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNzMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE3My5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xNzQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3NC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNzQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE3NC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTc0Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3NS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTc1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE3NS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTc1Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTc1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzUuaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTc2LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNzYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTc2LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzYuaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
NzYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Ni5odG1sCkBAIC0wLDAgKzEsMTYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1l
bnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9u
LnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVy
dGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRp
Y2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Ny1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Ny5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Ny5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTc3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAg
IC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKwor
ICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3Np
dGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVs
ZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJl
bnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBv
c2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAg
ICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVsw
XSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50
ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBv
c2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNu
YXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0
ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBz
dXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkg
PSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVk
IChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4
cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
aG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+
CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+
CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhv
cml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
aG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIg
Y2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1l
Lmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE3OC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTc4LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3OC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBA
QAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTc4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTc4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5
ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNzguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJw
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHls
ZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwor
ICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0
aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVt
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRU
b3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVu
dCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9m
ZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAp
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHBy
b3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2Ug
ICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1
c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFt
ZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8g
dGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBl
eHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4
cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
YmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRp
diBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAg
IDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdl
dCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1h
aW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGlj
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTc5
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTc5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzku
aHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNzkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBj
OTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3OS5o
dG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhp
ZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAg
IG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAg
ICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBw
b3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAg
ICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9u
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
Iik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRo
ZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFw
IHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRp
b24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlv
biArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdl
bmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9k
aXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9y
aXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwi
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNi
ZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTgt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4Lmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4Lmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4MC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTgwLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4MC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTgwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTgwLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xODAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTgxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODEtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTgxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xODEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE4MS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xODItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4Mi5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE4Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTgyLmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4My1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTgzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4
My1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTgzLmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTgzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODMuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTg0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
ODQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTg0LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4NC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xODUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4NS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTE4NS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4NS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTg1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTE4Ni1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTg2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE4Ni1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgor
IAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTg2Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTg2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
ODYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2
YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAg
ICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVu
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2Nh
dGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lk
ZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQg
c25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBv
c2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9z
aXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUn
LCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9
Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5o
dG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTg3LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xODctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJi
OWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTg3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODcuaHRtbCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xODcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIz
NDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4Ny5odG1sCkBAIC0w
LDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxh
eTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFy
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9
IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hp
bGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9
IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBi
YWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50Lgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVs
YXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE4OC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdl
ODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODgtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2
ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4OC5odG1sIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4OC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTg4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVy
dGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRp
b24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCAr
Ii4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBw
b2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNh
bFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwt
bWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTE4OS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTg5LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJk
OWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4OS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTg5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTg5Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xODkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAg
ICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVu
dC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkg
eworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRp
b24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRp
b24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBi
YWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAi
ICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGds
aWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEds
aWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jp
em9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAg
ICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpv
bnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jp
em9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFz
cz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRt
bCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMTktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTE5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xOS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
OS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTAtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE5MC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xOTAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5MC5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE5MC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkwLmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5MS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTkxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5MS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkxLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTkyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkyLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xOTIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE5Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xOTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5My1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xOTMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE5My5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5My5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTkzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5NC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTk0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE5NC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTk0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTQuaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk1LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xOTUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk1LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTUuaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
OTUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5NS5odG1sCkBAIC0wLDAgKzEsMTYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1l
bnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9u
LnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVy
dGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRp
Y2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5Ni1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTYtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5Ni5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5Ni5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTk2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAg
IC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKwor
ICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3Np
dGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVs
ZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJl
bnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBv
c2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAg
ICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVsw
XSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50
ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBv
c2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNu
YXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0
ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBz
dXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkg
PSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVk
IChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4
cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
aG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+
CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+
CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhv
cml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
aG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIg
Y2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1l
Lmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE5Ny1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk3LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5Ny1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBA
QAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTk3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5
ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xOTcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJw
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHls
ZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwor
ICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0
aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVt
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRU
b3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVu
dCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9m
ZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAp
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHBy
b3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2Ug
ICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1
c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFt
ZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8g
dGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBl
eHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4
cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
YmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRp
diBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAg
IDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdl
dCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1h
aW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGlj
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk4
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTk4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTgu
aHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xOTguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBj
OTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5OC5o
dG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhp
ZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAg
IG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAg
ICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBw
b3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAg
ICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9u
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
Iik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRo
ZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFw
IHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRp
b24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlv
biArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdl
bmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9k
aXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9y
aXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwi
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTE5OS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVj
M2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
OTktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5OS5odG1sIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE5OS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0
ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk5Lmh0bWwKQEAgLTAsMCAr
MSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxz
dHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307
CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAo
ZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9z
aXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRU
b3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sg
dG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
IT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJn
ZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9u
b3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0
b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBv
bmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2
ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
dmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTIwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
MC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTIwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMC5o
dG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhp
ZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAg
IG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAg
ICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBw
b3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAg
ICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9u
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
Iik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRo
ZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFw
IHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRp
b24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlv
biArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdl
bmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9k
aXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9y
aXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwi
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDAtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIwMC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVj
M2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
MDAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwMC5odG1sIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTIwMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0
ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjAwLmh0bWwKQEAgLTAsMCAr
MSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxz
dHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307
CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAo
ZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9z
aXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRU
b3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sg
dG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
IT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJn
ZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9u
b3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0
b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBv
bmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2
ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
dmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjAxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgy
NDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwMS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjAxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjAxLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
OworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55
ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNl
dFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55
ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9k
eSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlv
dXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBF
eHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBN
YWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Ny
b2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50
cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRp
bnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2Fk
KCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAw
cHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFy
Z2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWlu
ZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMDIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIwMi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yMDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwMy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yMDMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIwMy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjAzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwNC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjA0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTIwNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA0Lmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDQuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA1LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMDUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA1LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDUuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwNS5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yMDYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwNi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDYtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTIwNi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwNi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjA2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTIwNy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA3LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjA3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMDcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA4LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjA4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDguaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMDguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwOC5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTIwOS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDkt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwOS5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIwOS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA5Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAg
ICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVu
dC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkg
eworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRp
b24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRp
b24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBi
YWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAi
ICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGds
aWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEds
aWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jp
em9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAg
ICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpv
bnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jp
em9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFz
cz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRt
bCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjEwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTAtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjEwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitU
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVy
dGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMTAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcx
ZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTIxMC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTEtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQw
OTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yMTEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMS5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIxMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4
YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjExLmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjEyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZl
MDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjEyLmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjEyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEy
ZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTIuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjEzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjEzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMy5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yMTQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTIxNC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjE0Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIx
NS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjE1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIxNS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjE1
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjE1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTUu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjE2LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMTYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjE2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTYuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMTYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNi5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIxNy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTctZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjE3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTIxOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjE4LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxOC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjE4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjE4Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMTguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjE5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjE5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yMTkuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIxOS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxv
Y2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQ
b3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDAp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1l
Lmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJi
OWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyLmh0bWwgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyLmh0bWwKQEAgLTAsMCAr
MSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxz
dHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307
CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAo
ZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9z
aXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRU
b3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sg
dG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
IT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJn
ZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9u
b3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0
b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBv
bmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2
ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
dmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjIwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgy
NDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjIwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjIwLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
OworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55
ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNl
dFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55
ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9k
eSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlv
dXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBF
eHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBN
YWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Ny
b2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50
cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRp
bnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2Fk
KCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAw
cHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFy
Z2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWlu
ZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjIxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjEtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjIxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMjEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjEuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIyMS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yMjItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yMjItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIyMi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjIyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjIzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTIyMy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjIzLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjIzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjMuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI0LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMjQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI0LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjQuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNC5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yMjUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTIyNS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjI1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTIyNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI2LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjI2Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMjYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI3LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjI3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjcuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMjcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNy5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjgtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTIyOC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjgt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyOC5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIyOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI4Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyOS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI5
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyOS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI5Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yMy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMy5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzAtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzMC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQw
OTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yMzAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzMC5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIzMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4
YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMwLmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzMS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjMxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZl
MDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzMS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMxLmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjMxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEy
ZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzEuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzIt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzMi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yMzMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzMy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTIzMy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjMzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIz
NC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIzNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM0
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjM0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzQu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM1LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMzUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjM1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzUuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMzUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzNS5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIzNi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzYtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzNi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzNi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTIzNy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM3LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzNy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjM3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM3Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMzcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjM4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjM4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yMzguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIzOC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxv
Y2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQ
b3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDAp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1l
Lmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTIzOS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0
MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMzktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzOS5odG1sIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTIzOS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNk
MjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM5Lmh0bWwKQEAg
LTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2
YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9u
ID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3
aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54
ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVk
IGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIg
KyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRp
Y2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFt
ZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQu
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBy
ZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdl
ODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
OworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55
ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNl
dFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55
ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9k
eSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlv
dXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBF
eHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBN
YWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Ny
b2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50
cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRp
bnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2Fk
KCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAw
cHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFy
Z2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWlu
ZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjQwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDAtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNDAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDAuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI0MC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yNDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0MS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yNDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI0MS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjQxLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0Mi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjQyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTI0Mi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQyLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjQyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDIuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNDMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDMuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0My5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yNDQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0NC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI0NC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0NC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjQ0Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI0NS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ1LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0NS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjQ1Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNDUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ2LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjQ2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDYuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNDYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0Ni5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI0Ny1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDct
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0Ny5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI0Ny5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ3Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0OC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ4
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0OC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ4Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjQ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0
IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yNDkuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDkuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJl
MTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI0OS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
NS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1Lmh0
bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1Lmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1MC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjUwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZl
MDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1MC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjUwLmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjUwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEy
ZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTAuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjUxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTEt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjUxLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTEuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1MS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yNTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1Mi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI1Mi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjUyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1
My1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjUzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI1My1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjUz
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjUzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTMu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNTQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjU0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTQuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNTQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1NC5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI1NS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1NS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1NS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI1Ni1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU2LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1Ni1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjU2Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU2Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNTYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjU3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTctZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjU3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yNTcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI1Ny5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxv
Y2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQ
b3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDAp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1l
Lmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTgtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI1OC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0
MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNTgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1OC5odG1sIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI1OC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNk
MjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU4Lmh0bWwKQEAg
LTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2
YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9u
ID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3
aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54
ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVk
IGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIg
KyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRp
Y2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFt
ZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQu
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBy
ZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1OS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjU5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFk
N2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1OS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU5Lmh0bWwgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU5
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTkuaHRtbApAQCAtMCwwICsxLDE2MyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgor
ICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52
ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhl
bGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3Np
dGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50
Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAg
ICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
ICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUg
cHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVs
ICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFw
IHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93
LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVs
RXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0i
b25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0
aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9
InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRp
Y2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNh
bC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwv
ZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJk
OWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yNi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yNjAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2MC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yNjAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI2MC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2MC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjYwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2MS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjYxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTI2MS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjYxLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjYxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjEuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjYyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNjItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjYyLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjIuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yNjMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2My1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI2My5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2My5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjYzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI2NC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY0LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2NC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjY0Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNjQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY1LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjY1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjUuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNjUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2NS5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjYtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI2Ni1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjYt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2Ni5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI2Ni5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY2Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2Ny1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY3
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2Ny1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY3Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjY4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjgtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0
IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yNjguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjguaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJl
MTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI2OC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
NjktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2OS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNjktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAK
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2
OS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI2OS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4
MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY5
Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFy
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAg
ICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRp
b24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUg
dGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNu
YXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0
aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBv
c2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48
L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJo
b3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRt
bCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVj
M2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
Ny1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjcuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yNy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjcuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjcwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzAt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjcwLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzAuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3MC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yNzEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3MS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI3MS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjcxLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3
Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjcyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI3Mi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjcy
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjcyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzIu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjczLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNzMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjczLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzMuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNzMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3My5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI3NC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3NC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3NC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc0Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI3NS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc1LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3NS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjc1Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc1Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNzUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjc2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjc2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yNzYuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI3Ni5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxv
Y2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQ
b3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDAp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1l
Lmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI3Ny1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0
MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNzctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3Ny5odG1sIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI3Ny5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNk
MjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc3Lmh0bWwKQEAg
LTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2
YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9u
ID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3
aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54
ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVk
IGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIg
KyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRp
Y2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFt
ZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQu
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBy
ZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3OC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjc4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFk
N2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3OC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc4Lmh0bWwgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc4
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzguaHRtbApAQCAtMCwwICsxLDE2MyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgor
ICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52
ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhl
bGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3Np
dGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50
Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAg
ICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
ICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUg
cHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVs
ICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFw
IHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93
LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVs
RXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0i
b25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0
aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9
InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRp
Y2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNh
bC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwv
ZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjc5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4
YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc5LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jp
em9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yNzkuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzkuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI3OS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAu
aG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhp
ZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAg
IG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAg
ICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRp
b24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVt
ZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50
KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3Np
dGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAg
IGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0p
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9
IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1
cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3Np
dGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFw
IGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVk
ICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3Vy
ZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2
YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAo
Z2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBl
Y3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
R2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIp
IHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hv
cml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgor
ICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgor
ICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jp
em9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hv
cml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNs
YXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5o
dG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjgtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTI4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4MC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjgwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTI4MC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjgwLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjgwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODAuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjgxLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yODEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjgxLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODEuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODEu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4MS5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yODItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4Mi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI4Mi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4Mi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjgyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI4My1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjgzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4My1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjgzLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjgzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yODMuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjg0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODQuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yODQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4NC5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI4NS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4NS5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI4NS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg1Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4Ni1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg2
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4Ni1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg2Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg2Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjg3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODctZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0
IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yODcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODcuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJl
MTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI4Ny5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
ODgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4OC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yODgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAK
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4
OC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI4OC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4
MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg4
Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFy
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAg
ICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRp
b24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUg
dGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNu
YXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0
aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBv
c2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48
L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJo
b3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRt
bCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4OS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjg5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjli
ZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI4OS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg5Lmh0bWwgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjg5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQw
YTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODkuaHRtbApAQCAtMCww
ICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAg
PHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6
IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJw
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlw
dD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7
fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAg
ICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxl
IChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBw
b3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFj
ayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRh
cmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Ny
b2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBo
b25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkg
PSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9u
aXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0
aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cisg
ICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgy
NDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yOTAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5MC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI5MC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5MC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjkwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5
MS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjkxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI5MS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjkx
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjkxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTEu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjkyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yOTItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjkyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTIuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yOTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5Mi5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI5My1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5My5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5My5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjkzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI5NC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjk0LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5NC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjk0Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjk0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yOTQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjk1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjk1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yOTUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI5NS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxv
Y2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQ
b3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDAp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1l
Lmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTYtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI5Ni1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0
MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yOTYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5Ni5odG1sIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI5Ni5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNk
MjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjk2Lmh0bWwKQEAg
LTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2
YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9u
ID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3
aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54
ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVk
IGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIg
KyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRp
Y2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFt
ZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQu
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBy
ZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5Ny1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjk3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFk
N2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5Ny1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjk3Lmh0bWwgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjk3
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTcuaHRtbApAQCAtMCwwICsxLDE2MyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgor
ICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52
ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhl
bGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3Np
dGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50
Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAg
ICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
ICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUg
cHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVs
ICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFw
IHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93
LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVs
RXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0i
b25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0
aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9
InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRp
Y2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNh
bC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwv
ZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjk4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTgtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4
YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjk4LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jp
em9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yOTguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTguaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI5OC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAu
aG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhp
ZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAg
IG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAg
ICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRp
b24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVt
ZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50
KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3Np
dGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAg
IGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0p
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9
IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1
cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3Np
dGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFw
IGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVk
ICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3Vy
ZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2
YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAo
Z2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBl
Y3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
R2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIp
IHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hv
cml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgor
ICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgor
ICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jp
em9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hv
cml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNs
YXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5o
dG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yOTktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5OS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAK
K1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2
ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI5OS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5OS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1
NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjk5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+
CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAg
ICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlv
biBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9w
OworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQg
PT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZz
ZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9w
ZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAg
CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0
IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRo
ZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhw
ZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBl
Y3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkg
fSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Jl
Z2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYg
c3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8
ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQi
IGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWlu
ZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2Fs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMy5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMw
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAu
aG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhp
ZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAg
IG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAg
ICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRp
b24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVt
ZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50
KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3Np
dGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAg
IGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0p
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9
IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1
cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3Np
dGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFw
IGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVk
ICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3Vy
ZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2
YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAo
Z2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBl
Y3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
R2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIp
IHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hv
cml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgor
ICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgor
ICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jp
em9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hv
cml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNs
YXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5o
dG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zMDAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwMC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAK
K1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2
ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMwMC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1
NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzAwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+
CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAg
ICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlv
biBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9w
OworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQg
PT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZz
ZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9w
ZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAg
CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0
IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRo
ZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhw
ZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBl
Y3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkg
fSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Jl
Z2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYg
c3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8
ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQi
IGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWlu
ZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2Fs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwMS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUy
ZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTMwMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jp
em9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAxLmh0
bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkx
YThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDEuaHRt
bApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAg
ICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9z
aXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAg
ICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNu
YXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBm
b3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIp
OworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
dmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUg
aUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBw
b2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9u
KQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24g
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5k
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
ICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRp
b246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6
b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9
InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNi
ZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAy
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDIuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZl
YTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwMi5odG1sCkBAIC0wLDAgKzEs
MTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9Owor
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVs
ZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0
aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9w
OworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRv
IHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxU
b3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9y
IHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25s
b2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7
IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
dmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3Zl
cnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMw
My1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1
M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwMy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwMy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
KworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBw
b3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9
IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQ
YXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9
IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhw
ZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFr
ZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9s
bGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
IEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgp
OyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4
OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZy
YW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTMwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA0LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzA0Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMDQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzA1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzA1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
MDUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMw
NS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDYtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMwNi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMDYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwNi5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMwNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA2Lmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwNy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzA3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwNy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA3Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzA4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDgtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA4LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zMDguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDguaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMwOC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zMDktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwOS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMDktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTMwOS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwOS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzA5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0
MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEuaHRtbCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEuaHRtbApAQCAtMCww
ICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAg
PHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6
IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJw
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlw
dD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7
fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAg
ICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxl
IChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBw
b3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFj
ayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRh
cmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Ny
b2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBo
b25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkg
PSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9u
aXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0
aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cisg
ICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMTAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgw
ODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEwLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVy
dGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTAuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxMC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAg
ICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRp
Y2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2Nr
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAg
ICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1l
bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zm
c2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAg
ICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJi
b2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAg
ZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2
aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIu
IEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8v
IE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAg
ICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
Y3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9p
bnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFt
ZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29u
dGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVu
dHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxv
YWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAz
MDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxU
YXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1h
aW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+
CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zMTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxMS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDli
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTEtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMxMS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxMS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzExLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jp
em9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
IDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAg
ICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54
ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQu
b2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9u
LnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYg
KGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxl
bWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBw
b3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9u
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFj
ayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiAr
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAg
ICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdl
IGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlk
ZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVk
ICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlk
ZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25M
b2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewor
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpv
bnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAg
ICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAg
ICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250
YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpv
bnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9
InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwi
ICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTMxMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTMxMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzEyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4
Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMTIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAg
ICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisK
KyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBh
cmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBs
b2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0
c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5l
eHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3Rl
ZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVk
UG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAw
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4n
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xh
c3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFt
ZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMTMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzEzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTMuaHRtbCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMTMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJj
ZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxMy5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMxNC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxNC5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMx
NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE0Lmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxNS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE1LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxNS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzE1Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE1Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMTUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzE2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTYtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zMTYuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMxNi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxNy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMTctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxNy5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMxNy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE3Lmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxOC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzE4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMx
OC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE4Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzE4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTguaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
MTktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE5LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTkuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTkuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxOS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTMyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+
CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAg
ICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlv
biBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9w
OworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQg
PT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZz
ZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9w
ZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAg
CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0
IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRo
ZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhw
ZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBl
Y3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkg
fSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Jl
Z2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYg
c3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8
ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQi
IGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWlu
ZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2Fs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyMC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUy
ZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTMyMC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jp
em9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIwLmh0
bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzIwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkx
YThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjAuaHRt
bApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAg
ICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9z
aXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAg
ICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNu
YXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBm
b3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIp
OworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
dmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUg
aUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBw
b2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9u
KQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24g
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5k
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
ICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRp
b246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6
b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9
InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIxLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMjEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNi
ZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIx
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjEuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMjEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZl
YTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyMS5odG1sCkBAIC0wLDAgKzEs
MTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9Owor
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVs
ZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0
aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9w
OworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRv
IHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxU
b3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9y
IHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25s
b2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7
IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
dmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3Zl
cnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMy
Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1
M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyMi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyMi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
KworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBw
b3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9
IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQ
YXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9
IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhw
ZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFr
ZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9s
bGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
IEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgp
OyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4
OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZy
YW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTMyMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyMy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzIzLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMjMuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzI0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzI0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
MjQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMjQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMy
NC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMyNS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMjUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyNS5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMyNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzI1Lmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyNi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzI2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyNi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzI2Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzI2Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzI3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjctZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzI3LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zMjcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjcuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMyNy5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zMjgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyOC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMjgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTMyOC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzI4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyOS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzI5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMyOS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzI5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzI5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjkuaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFk
N2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMy5odG1sIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMy5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAg
ICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRp
Y2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2Nr
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAg
ICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1l
bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zm
c2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAg
ICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJi
b2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAg
ZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2
aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIu
IEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8v
IE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAg
ICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
Y3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9p
bnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFt
ZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29u
dGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVu
dHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxv
YWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAz
MDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxU
YXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1h
aW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+
CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zMzAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzMC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDli
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzAtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMzMC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzMC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzMwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jp
em9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
IDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAg
ICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54
ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQu
b2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9u
LnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYg
KGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxl
bWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBw
b3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9u
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFj
ayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiAr
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAg
ICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdl
IGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlk
ZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVk
ICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlk
ZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25M
b2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewor
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpv
bnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAg
ICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAg
ICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250
YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpv
bnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9
InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwi
ICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTMzMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzMxLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTMzMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzMxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzMxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4
Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMzEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAg
ICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisK
KyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBh
cmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBs
b2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0
c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5l
eHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3Rl
ZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVk
UG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAw
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4n
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xh
c3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFt
ZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzMyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMzItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzMyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzIuaHRtbCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMzIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJj
ZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzMi5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMzMy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzMy5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMz
My5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzMzLmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM0LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzNC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzM0Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMzQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzM1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zMzUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMzNS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzYt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzNi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMzYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzNi5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMzNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM2Lmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzNy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzM3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMz
Ny1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM3Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzM3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzcuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
MzgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM4LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzguaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzOC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zMzktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzOS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTMzOS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzOS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzM5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTM0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQu
aHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQuaHRt
bApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAg
ICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9z
aXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAg
ICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNu
YXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBm
b3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIp
OworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
dmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUg
aUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBw
b2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9u
KQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24g
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5k
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
ICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRp
b246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6
b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9
InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQwLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNDAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNi
ZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQw
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDAuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zNDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZl
YTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0MC5odG1sCkBAIC0wLDAgKzEs
MTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9Owor
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVs
ZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0
aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9w
OworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRv
IHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxU
b3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9y
IHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25s
b2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7
IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
dmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3Zl
cnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0
MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1
M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDEtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0MS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0MS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQxLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
KworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBw
b3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9
IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQ
YXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9
IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhw
ZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFr
ZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9s
bGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
IEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgp
OyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4
OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZy
YW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM0Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0Mi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzQyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNDIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzQzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzQzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NDMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0
My5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM0NC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zNDQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0NC5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM0NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ0Lmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0NS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzQ1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0NS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ1Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ1Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzQ2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDYtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ2LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zNDYuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDYuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM0Ni5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zNDctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0Ny1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNDctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM0Ny5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0Ny5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzQ3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0OC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM0OC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ4Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzQ4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDguaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ5LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zNDktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ5LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDkuaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NDkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0OS5odG1sCkBAIC0wLDAgKzEsMTYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1l
bnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9u
LnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVy
dGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRp
Y2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4
YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTM1Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jp
em9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
IDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAg
ICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54
ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQu
b2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9u
LnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYg
KGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxl
bWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBw
b3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9u
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFj
ayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiAr
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAg
ICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdl
IGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlk
ZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVk
ICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlk
ZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25M
b2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewor
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpv
bnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAg
ICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAg
ICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250
YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpv
bnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9
InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwi
ICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM1MC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUwLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTM1MC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzUwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4
Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zNTAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAg
ICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisK
KyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBh
cmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBs
b2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0
c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5l
eHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3Rl
ZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVk
UG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAw
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4n
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xh
c3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFt
ZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUxLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNTEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzUxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTEuaHRtbCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJj
ZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1MS5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM1Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1Mi5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1
Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUyLmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1My1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1My1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzUzLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNTMuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzU0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzU0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zNTQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM1NC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1NS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNTUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1NS5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM1NS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzU1Lmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1Ni1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzU2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1
Ni1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzU2Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzU2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTYuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzU3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NTctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzU3LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1Ny5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zNTgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1OC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM1OC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1OC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzU4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTM1OS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzU5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM1OS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgor
IAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzU5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzU5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NTkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2
YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAg
ICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVu
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2Nh
dGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lk
ZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQg
c25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBv
c2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9z
aXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUn
LCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9
Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5o
dG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjli
ZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTM2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNi5odG1sIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNi5odG1sCkBAIC0wLDAgKzEs
MTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9Owor
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVs
ZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0
aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9w
OworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRv
IHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxU
b3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9y
IHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25s
b2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7
IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
dmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3Zl
cnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2
MC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1
M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjAtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2MC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2MC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
KworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBw
b3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9
IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQ
YXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9
IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhw
ZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFr
ZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9s
bGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
IEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgp
OyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4
OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZy
YW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM2MS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYxLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2MS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzYxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYxLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNjEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzYyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzYyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NjIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNjIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2
Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM2My1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zNjMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2My5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM2My5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYzLmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2NC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzY0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2NC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY0Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzY1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY1LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zNjUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM2NS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zNjYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2Ni1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNjYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM2Ni5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2Ni5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzY2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2Ny1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzY3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM2Ny1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY3Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzY3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjcuaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY4LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zNjgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY4LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjguaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NjguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2OC5odG1sCkBAIC0wLDAgKzEsMTYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1l
bnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9u
LnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVy
dGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRp
Y2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2OS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjktZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2OS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2OS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzY5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAg
IC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKwor
ICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3Np
dGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVs
ZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJl
bnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBv
c2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAg
ICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVsw
XSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50
ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBv
c2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNu
YXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0
ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBz
dXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkg
PSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVk
IChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4
cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
aG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+
CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+
CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhv
cml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
aG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIg
Y2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1l
Lmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTM3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAg
ICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisK
KyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBh
cmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBs
b2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0
c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5l
eHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3Rl
ZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVk
UG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAw
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4n
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xh
c3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFt
ZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzcwLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNzAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzcwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzAuaHRtbCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNzAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJj
ZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3MC5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzEtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM3MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzEtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3MS5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3
MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzcxLmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzcyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Mi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzcyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzcyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNzIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzczLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzczLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zNzMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM3My5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3NC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNzQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3NC5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM3NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc0Lmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3NS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzc1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3
NS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc1Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzc1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzUuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NzYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc2LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzYuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzYuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Ni5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zNzctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Ny1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM3Ny5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Ny5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzc3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTM3OC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM3OC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgor
IAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
Mzc4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzc4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NzguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2
YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAg
ICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVu
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2Nh
dGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lk
ZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQg
c25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBv
c2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9z
aXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUn
LCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9
Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5o
dG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc5LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zNzktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJi
OWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzc5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzkuaHRtbCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zNzkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIz
NDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3OS5odG1sCkBAIC0w
LDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxh
eTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFy
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9
IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hp
bGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9
IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBi
YWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50Lgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVs
YXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgw
ODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzgtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzguaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
KworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBw
b3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9
IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQ
YXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9
IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhw
ZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFr
ZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9s
bGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
IEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgp
OyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4
OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZy
YW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM4MC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzgwLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4MC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzgwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzgwLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zODAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzgxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzgxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
ODEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zODEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4
MS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM4Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zODItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4Mi5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM4Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzgyLmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4My1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzgzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4My1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzgzLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzgzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODMuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzg0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzg0LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zODQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM4NC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zODUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4NS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zODUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM4NS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4NS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzg1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4Ni1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzg2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM4Ni1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzg2Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzg2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODYuaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzg3LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zODctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzg3LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODcuaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
ODcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4Ny5odG1sCkBAIC0wLDAgKzEsMTYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1l
bnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9u
LnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVy
dGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRp
Y2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4OC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODgtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4OC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4OC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzg4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAg
IC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKwor
ICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3Np
dGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVs
ZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJl
bnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBv
c2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAg
ICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVsw
XSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50
ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBv
c2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNu
YXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0
ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBz
dXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkg
PSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVk
IChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4
cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
aG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+
CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+
CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhv
cml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
aG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIg
Y2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1l
Lmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTM4OS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzg5LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4OS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBA
QAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzg5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzg5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5
ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zODkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJw
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHls
ZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwor
ICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0
aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVt
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRU
b3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVu
dCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9m
ZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAp
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHBy
b3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2Ug
ICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1
c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFt
ZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8g
dGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBl
eHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4
cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
YmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRp
diBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAg
IDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdl
dCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1h
aW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGlj
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUy
ZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTM5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOS5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOS5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTAtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM5MC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTAtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5MC5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5
MC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkwLmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5MS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkxLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5MS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzkxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkxLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zOTEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzkyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zOTIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM5Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5My1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zOTMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5My5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM5My5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkzLmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5NC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzk0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5
NC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzk0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTQuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
OTUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk1LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5NS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zOTYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5Ni1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM5Ni5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5Ni5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzk2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTM5Ny1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM5Ny1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgor
IAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
Mzk3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzk3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
OTcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2
YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAg
ICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVu
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2Nh
dGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lk
ZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQg
c25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBv
c2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9z
aXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUn
LCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9
Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5o
dG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk4LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zOTgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJi
OWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzk4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTguaHRtbCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zOTguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIz
NDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5OC5odG1sCkBAIC0w
LDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxh
eTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFy
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9
IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hp
bGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9
IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBi
YWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50Lgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVs
YXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM5OS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdl
ODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTktZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2
ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5OS5odG1sIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5OS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVy
dGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRp
b24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCAr
Ii4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBw
b2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNh
bFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwt
bWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MC5odG1sIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MC5odG1sCkBAIC0w
LDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxh
eTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFy
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9
IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hp
bGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9
IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBi
YWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50Lgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVs
YXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQwMC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdl
ODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDAtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2
ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwMC5odG1sIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwMC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVy
dGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRp
b24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCAr
Ii4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBw
b2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNh
bFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwt
bWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAxLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJk
OWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwMS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDAxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAxLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00MDEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAg
ICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVu
dC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkg
eworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRp
b24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRp
b24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBi
YWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAi
ICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGds
aWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEds
aWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jp
em9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAg
ICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpv
bnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jp
em9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFz
cz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRt
bCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDItZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitU
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVy
dGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MDIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcx
ZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQwMi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwMy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQw
OTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00MDMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwMy5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQwMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4
YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAzLmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwNC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDA0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZl
MDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwNC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA0Lmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEy
ZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDQuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA1LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwNS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00MDYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwNi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQwNi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDA2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQw
Ny1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQwNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA3
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDA3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDcu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA4LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MDgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDA4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDguaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MDguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwOC5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQwOS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDktZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwOS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwOS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJw
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHls
ZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwor
ICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0
aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVt
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRU
b3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVu
dCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9m
ZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAp
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHBy
b3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2Ug
ICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1
c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFt
ZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8g
dGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBl
eHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4
cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
YmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRp
diBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAg
IDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdl
dCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1h
aW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGlj
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDEw
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDEwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTAu
aHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00MTAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBj
OTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMC5o
dG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhp
ZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAg
IG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAg
ICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBw
b3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAg
ICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9u
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
Iik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRo
ZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFw
IHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRp
b24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlv
biArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdl
bmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9k
aXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9y
aXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwi
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTEtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQxMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVj
M2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
MTEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMS5odG1sIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQxMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0
ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDExLmh0bWwKQEAgLTAsMCAr
MSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxz
dHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307
CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAo
ZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9z
aXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRU
b3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sg
dG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
IT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJn
ZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9u
b3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0
b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBv
bmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2
ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
dmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDEyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgy
NDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDEyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDEyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
OworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55
ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNl
dFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55
ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9k
eSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlv
dXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBF
eHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBN
YWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Ny
b2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50
cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRp
bnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2Fk
KCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAw
cHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFy
Z2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWlu
ZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDEzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDEzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MTMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQxMy5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00MTQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00MTQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQxNC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDE0Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDE1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQxNS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDE1Lmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDE1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTUuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDE2LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MTYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDE2LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTYuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTYu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNi5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00MTctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQxNy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDE3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQxOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDE4LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxOC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDE4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDE4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MTguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDE5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDE5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTkuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MTkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxOS5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00Mi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyLmh0bWwgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVy
dGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRp
b24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCAr
Ii4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBw
b2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNh
bFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwt
bWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQyMC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDIwLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJk
OWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyMC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDIwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDIwLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00MjAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAg
ICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVu
dC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkg
eworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRp
b24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRp
b24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBi
YWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAi
ICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGds
aWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEds
aWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jp
em9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAg
ICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpv
bnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jp
em9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFz
cz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRt
bCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDIxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjEtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDIxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitU
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVy
dGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MjEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcx
ZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQyMS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQw
OTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00MjItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyMi5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQyMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4
YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDIyLmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyMy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDIzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZl
MDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyMy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDIzLmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDIzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEy
ZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjMuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI0LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00MjUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQyNS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDI1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQy
Ni1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQyNi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI2
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDI2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjYu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI3LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MjctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDI3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjcuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MjcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNy5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQyOC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjgtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyOC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyOC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQyOS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI5LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyOS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDI5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI5Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MjkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
My5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00My5o
dG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhp
ZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAg
IG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAg
ICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBw
b3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAg
ICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9u
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
Iik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRo
ZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFw
IHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRp
b24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlv
biArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdl
bmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9k
aXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9y
aXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwi
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzAtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQzMC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVj
M2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
MzAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzMC5odG1sIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQzMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0
ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMwLmh0bWwKQEAgLTAsMCAr
MSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxz
dHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307
CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAo
ZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9z
aXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRU
b3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sg
dG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
IT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJn
ZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9u
b3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0
b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBv
bmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2
ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
dmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDMxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgy
NDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzMS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMxLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
OworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55
ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNl
dFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55
ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9k
eSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlv
dXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBF
eHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBN
YWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Ny
b2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50
cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRp
bnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2Fk
KCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAw
cHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFy
Z2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWlu
ZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDMyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MzIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQzMi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00MzMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzMy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00MzMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQzMy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDMzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzNC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDM0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQzNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM0Lmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDM0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzQuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM1LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MzUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM1LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzUuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzNS5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00MzYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzNi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzYtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQzNi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzNi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDM2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQzNy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM3LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDM3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MzcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM4LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDM4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzguaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MzguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzOC5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQzOS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00Mzkt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzOS5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQzOS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM5Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAg
ICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVu
dC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkg
eworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRp
b24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRp
b24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBi
YWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAi
ICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGds
aWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEds
aWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jp
em9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAg
ICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpv
bnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jp
em9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFz
cz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRt
bCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDQwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDAtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDQwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitU
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVy
dGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NDAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcx
ZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ0MC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDEtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQw
OTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00NDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0MS5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ0MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4
YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQxLmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0Mi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDQyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZl
MDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0Mi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQyLmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDQyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEy
ZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDIuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0My5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00NDQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0NC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ0NC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDQ0Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0
NS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ0NS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ1
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDQ1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDUu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ2LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NDYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDQ2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDYuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NDYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0Ni5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ0Ny1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDctZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0Ny5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0Ny5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQ0OC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ4LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0OC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDQ4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ4Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NDguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDQ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDQ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00NDkuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ0OS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxv
Y2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQ
b3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDAp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1l
Lmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJi
OWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Lmh0bWwgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Lmh0bWwKQEAgLTAsMCAr
MSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxz
dHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307
CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAo
ZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9z
aXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRU
b3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sg
dG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
IT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJn
ZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9u
b3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0
b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBv
bmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2
ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
dmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1MC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDUwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgy
NDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1MC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDUwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDUwLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
OworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55
ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNl
dFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55
ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9k
eSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlv
dXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBF
eHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBN
YWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Ny
b2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50
cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRp
bnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2Fk
KCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAw
cHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFy
Z2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWlu
ZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDUxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTEtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDUxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NTEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTEuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ1MS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00NTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00NTItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ1Mi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDUyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1My1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDUzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ1My1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDUzLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDUzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTMuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU0LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NTQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU0LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTQuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1NC5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00NTUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1NS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ1NS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1NS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDU1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ1Ni1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU2LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Ni1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDU2Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NTYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU3LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDU3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTcuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NTcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Ny5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTgtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ1OC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTgt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1OC5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ1OC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU4Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1OS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU5
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1OS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU5Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00Ni5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00Ni5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjAtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2MC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQw
OTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00NjAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2MC5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ2MC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4
YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDYwLmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2MS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDYxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZl
MDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2MS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDYxLmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDYxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEy
ZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjEuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDYyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjIt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDYyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00NjMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2My1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ2My5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2My5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDYzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2
NC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ2NC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY0
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDY0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjQu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY1LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NjUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDY1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjUuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NjUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2NS5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ2Ni1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjYtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2Ni5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2Ni5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQ2Ny1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY3LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2Ny1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDY3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY3Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NjcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDY4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDY4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00NjguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ2OC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxv
Y2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQ
b3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDAp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1l
Lmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ2OS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0
MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NjktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2OS5odG1sIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ2OS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNk
MjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY5Lmh0bWwKQEAg
LTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2
YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9u
ID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3
aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54
ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVk
IGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIg
KyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRp
Y2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFt
ZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQu
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBy
ZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00Ny1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdl
ODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00Ny1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00Ny5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
OworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55
ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNl
dFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55
ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9k
eSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlv
dXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBF
eHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBN
YWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Ny
b2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50
cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRp
bnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2Fk
KCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAw
cHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFy
Z2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWlu
ZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDcwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzAtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDcwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NzAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzAuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ3MC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00NzEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3MS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00NzEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ3MS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDcxLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3Mi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDcyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ3Mi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDcyLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDcyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzIuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDczLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NzMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDczLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzMuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3My5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00NzQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3NC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ3NC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3NC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDc0Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ3NS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc1LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3NS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDc1Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NzUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc2LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDc2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzYuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NzYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3Ni5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ3Ny1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00Nzct
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3Ny5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ3Ny5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc3Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3OC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc4
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3OC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc4Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDc5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0
IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00NzkuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzkuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJl
MTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ3OS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
OC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Lmh0
bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Lmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4MC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDgwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZl
MDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4MC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDgwLmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDgwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEy
ZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODAuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDgxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODEt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDgxLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODEuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4MS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00ODItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Mi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ4Mi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDgyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4
My1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDgzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ4My1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDgz
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDgzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODMu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDg0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00ODQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDg0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODQuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00ODQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4NC5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ4NS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4NS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4NS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDg1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQ4Ni1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDg2LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Ni1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDg2Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDg2Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00ODYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDg3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODctZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDg3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00ODcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ4Ny5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxv
Y2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQ
b3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDAp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1l
Lmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODgtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ4OC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0
MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00ODgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4OC5odG1sIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ4OC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNk
MjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDg4Lmh0bWwKQEAg
LTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2
YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9u
ID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3
aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54
ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVk
IGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIg
KyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRp
Y2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFt
ZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQu
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBy
ZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4OS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDg5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFk
N2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4OS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDg5Lmh0bWwgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDg5
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODkuaHRtbApAQCAtMCwwICsxLDE2MyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgor
ICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52
ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhl
bGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3Np
dGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50
Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAg
ICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
ICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUg
cHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVs
ICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFw
IHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93
LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVs
RXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0i
b25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0
aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9
InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRp
Y2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNh
bC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwv
ZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJk
OWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00OS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00OS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00OTAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5MC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00OTAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ5MC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5MC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDkwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5MS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDkxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ5MS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDkxLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDkxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTEuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDkyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00OTItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDkyLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTIuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00OTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5My1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ5My5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5My5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDkzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ5NC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk0LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5NC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDk0Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00OTQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk1LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDk1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTUuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00OTUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5NS5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTYtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ5Ni1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTYt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5Ni5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ5Ni5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk2Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5Ny1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk3
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5Ny1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk3Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDk4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTgtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0
IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00OTguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTguaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJl
MTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ5OC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
OTktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5OS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00OTktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAK
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5
OS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ5OS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4
MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk5
Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFy
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAg
ICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRp
b24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUg
dGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNu
YXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0
aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBv
c2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48
L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJo
b3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRt
bCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNi
ZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNS5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNTAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUwLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS01MC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUwLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS01MC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01
MDAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUwMC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS01MDAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAK
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUw
MC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTUwMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4
MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTAw
Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFy
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAg
ICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRp
b24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUg
dGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNu
YXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0
aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBv
c2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48
L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJo
b3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRt
bCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUxLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS01MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVj
M2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01
MS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTEuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS01MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTEuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUyLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jp
em9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS01Mi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS01Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS01My1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNTMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTUzLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNTMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUz
Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFy
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAg
ICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRp
b24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUg
dGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNu
YXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0
aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBv
c2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48
L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJo
b3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRt
bCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS01NC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVj
M2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01
NC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTQuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS01NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTQuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU1LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU1LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jp
em9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS01NS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU1Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS01NS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS01Ni1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNTYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTU2Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNTYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU2
Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFy
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAg
ICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRp
b24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUg
dGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNu
YXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0
aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBv
c2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48
L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJo
b3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRt
bCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU3LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS01Ny1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVj
M2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01
Ny1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTcuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS01Ny5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTcuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU4LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU4LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jp
em9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS01OC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU4Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS01OC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS01OS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNTktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTU5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNTkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU5
Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFy
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAg
ICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRp
b24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUg
dGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNu
YXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0
aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBv
c2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48
L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJo
b3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRt
bCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNi
ZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNi5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNjAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYwLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS02MC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYwLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS02MC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02
MS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNjEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYxLmh0
bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNjEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYxLmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS02Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02Mi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjIuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02Mi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNjMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS02My5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS02My5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02
NC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNjQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY0Lmh0
bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNjQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY0Lmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY1LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS02NS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02NS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjUuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02NS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNjYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY2LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS02Ni5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY2Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS02Ni5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02
Ny1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNjctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY3Lmh0
bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNjcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY3Lmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY4LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS02OC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02OC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjguaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02OC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjguaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNjktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY5LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS02OS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY5Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS02OS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUy
ZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcuaHRtbCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS03Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03Lmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS03MC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03MC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03MC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNzEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcxLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS03MS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS03MS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03Mi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNzItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNzItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcyLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNzIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIz
NDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcyLmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTczLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS03My1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03My1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03My5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzMuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNzQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc0LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS03NC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS03NC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03NS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNzUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNzUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc1Lmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNzUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIz
NDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc1Lmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS03Ni1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03Ni1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzYuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03Ni5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNzctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc3LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS03Ny5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS03Ny5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03OC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNzgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNzgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc4Lmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNzguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIz
NDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc4Lmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS03OS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03OS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzkuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03OS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitU
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVy
dGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS04Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
OC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04MC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtODAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
ODAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgwLmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtODAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZl
YTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgwLmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04MS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04MS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtODEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04MS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtODEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAg
ICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVu
dC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkg
eworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRp
b24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRp
b24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBi
YWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAi
ICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGds
aWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEds
aWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jp
em9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAg
ICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpv
bnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jp
em9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFz
cz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRt
bCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtODItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTgyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS04Mi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04
Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04My1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtODMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
ODMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgzLmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtODMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZl
YTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgzLmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04NC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04NC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtODQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04NC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtODQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAg
ICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVu
dC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkg
eworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRp
b24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRp
b24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBi
YWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAi
ICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGds
aWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEds
aWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jp
em9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAg
ICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpv
bnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jp
em9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFz
cz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRt
bCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtODUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg1LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTg1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS04NS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04
NS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04Ni1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtODYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
ODYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg2Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtODYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZl
YTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg2Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04Ny1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04Ny1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtODcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04Ny5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtODcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAg
ICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVu
dC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkg
eworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRp
b24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRp
b24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBi
YWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAi
ICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGds
aWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEds
aWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jp
em9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAg
ICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpv
bnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jp
em9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFz
cz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRt
bCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtODgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg4LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTg4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS04OC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04
OC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04OS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtODktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
ODktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtODkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZl
YTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg5Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4
YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtOS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
OTAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTkwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05MC5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTkwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkx
YThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05MC5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05MS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtOTEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTEtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkxLmh0bWwgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTEu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkxLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVy
dGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRp
b24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCAr
Ii4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBw
b2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNh
bFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwt
bWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTkyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05Mi1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDli
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05Mi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtOTIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05Mi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtOTIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
OTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTkzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05My5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTkzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkx
YThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05My5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05NC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtOTQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk0Lmh0bWwgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk0Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVy
dGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRp
b24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCAr
Ii4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBw
b2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNh
bFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwt
bWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTk1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05NS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDli
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05NS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtOTUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05NS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtOTUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
OTYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTk2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05Ni5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTk2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkx
YThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05Ni5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05Ny1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtOTctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTctZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk3Lmh0bWwgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTcu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVy
dGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRp
b24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCAr
Ii4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBw
b2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNh
bFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwt
bWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTk4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05OC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDli
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05OC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtOTguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05OC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtOTguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
OTktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTk5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05OS5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTk5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkx
YThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05OS5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295789</attachid>
            <date>2016-11-30 16:49:42 -0800</date>
            <delta_ts>2020-03-19 21:22:39 -0700</delta_ts>
            <desc>Another attempt to observe flaky failures.</desc>
            <filename>bug-165196-20161130164914.patch</filename>
            <type>text/plain</type>
            <size>4354245</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5MTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNkNTJlM2JiNzQyODA2
ODUyYzUyNWIwYTJiMDI5OTY2NWJlODFmMi4uOWU0MzgxZDlhNGVmOTYxNzMwNDI2OGQ3MzFkZDMz
NGMyMDY5Y2Y3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyMSBAQAorMjAxNi0xMS0zMCAgV2Vu
c29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBTb21lIHNjcm9s
bCBzbmFwcGluZyB0ZXN0cyBhcmUgc3RpbGwgZmxha3kgYWZ0ZXIgcjIwOTA3MAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MTk2CisKKyAgICAgICAg
Tm90ZTogTm90IGFuIGFjdHVhbCBwYXRjaC4gSnVzdCB0cnlpbmcgdG8gaW5kdWNlIGZsYWt5IHRl
c3QgZmFpbHVyZXMgd2l0aCBsb2dnaW5nIG9uIEVXUy4KKworICAgICAgICBUZXN0czogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTAuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTEuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwLmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MDAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwMS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAyLmh0bWwKKyAg
ICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMDMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwNC5odG1sCisgICAgICAgICAgICAg
ICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTA1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwNy5odG1sCisg
ICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTA4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDkuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTExLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExMS5odG1sCisg
ICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTEyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTMuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTExNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTYuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTExNy5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE4Lmh0bWwKKyAgICAgICAgICAg
ICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMTkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjAuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTEyMS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIyLmh0bWwKKyAgICAgICAgICAg
ICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMjMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTI1Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xMjYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyNy5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTI4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzLmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xMzAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzMS5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTMyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzNC5odG1s
CisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTM1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzYuaHRtbAorICAgICAgICAg
ICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTEzNy5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzkuaHRt
bAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE0Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDAuaHRtbAorICAgICAgICAg
ICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE0MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDMuaHRt
bAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE0NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ1Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xNDYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0Ny5odG1sCisgICAgICAgICAgICAgICB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ4Lmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNDkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xNTAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1MS5odG1sCisgICAgICAgICAgICAgICB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUyLmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1NC5odG1sCisgICAgICAg
ICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMTU1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTYuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1Ny5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTU4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTkuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE2Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjAuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2MS5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTYyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjMuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE2NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTY1Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjYu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTE2Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTY4Lmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNjkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzAu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTE3MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTcyLmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNzMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3NC5odG1sCisgICAgICAgICAgICAgICB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTc1
Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNzYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Ny5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTc4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzkuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4
Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xODAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4MS5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTgyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODMuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4
NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTg1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODYuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE4Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTg4Lmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
ODkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTAuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE5MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkyLmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
OTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk1Lmh0bWwKKyAg
ICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xOTYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5Ny5odG1sCisgICAgICAgICAgICAg
ICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTk4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTIwLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDAuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIw
MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjAyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDMuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTIwNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA1Lmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
MDYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwNy5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA4Lmh0bWwKKyAg
ICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yMDkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxLmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
MTAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjEyLmh0bWwKKyAg
ICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yMTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNC5odG1sCisgICAgICAgICAgICAg
ICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjE1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNy5odG1sCisg
ICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjE4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTkuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMS5odG1sCisg
ICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjIyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjMuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIyNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjYuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIyNy5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI4Lmh0bWwKKyAgICAgICAgICAg
ICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yMjkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzAuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIzMS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMyLmh0bWwKKyAgICAgICAgICAg
ICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yMzMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM1Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMzYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzNy5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjM4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNDAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0MS5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjQyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0NC5odG1s
CisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjQ1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDYuaHRtbAorICAgICAgICAg
ICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTI0Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDkuaHRt
bAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTAuaHRtbAorICAgICAgICAg
ICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTI1MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjUyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTMuaHRt
bAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI1NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU1Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNTYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1Ny5odG1sCisgICAgICAgICAgICAgICB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU4Lmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yNTkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNjAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2MS5odG1sCisgICAgICAgICAgICAgICB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjYyLmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yNjMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2NC5odG1sCisgICAgICAg
ICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjY1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjYuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2Ny5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjY4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjkuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI3Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzAuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3MS5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjcyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzMuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI3NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc1Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzYu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI3Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc4Lmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yNzkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODAu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI4MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjgyLmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yODMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4NC5odG1sCisgICAgICAgICAgICAgICB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg1
Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yODYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4Ny5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjg4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODkuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5
Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yOTAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5MS5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjkyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTMuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5
NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjk1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTYuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI5Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjk4Lmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
OTkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwLmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zMDAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwMS5odG1sCisgICAgICAgICAgICAgICB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAy
Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMDMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwNC5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzA1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDYuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMw
Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzA4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDkuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTMxLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTAuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMx
MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzEyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTMuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTMxNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE1Lmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
MTYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxNy5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE4Lmh0bWwKKyAg
ICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMTkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyLmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
MjAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyMS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIyLmh0bWwKKyAg
ICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMjMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyNC5odG1sCisgICAgICAgICAgICAg
ICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzI1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyNy5odG1sCisg
ICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzI4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjkuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTMzLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzMS5odG1sCisg
ICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzMyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzMuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTMzNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzYuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTMzNy5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM4Lmh0bWwKKyAgICAgICAgICAg
ICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMzkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDAuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM0MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQyLmh0bWwKKyAgICAgICAgICAg
ICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zNDMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ1Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zNDYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0Ny5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzQ4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zNTAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1MS5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzUyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1NC5odG1s
CisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzU1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTYuaHRtbAorICAgICAgICAg
ICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM1Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzU4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTkuaHRt
bAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM2Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjAuaHRtbAorICAgICAgICAg
ICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM2MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjMuaHRt
bAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM2NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY1Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zNjYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2Ny5odG1sCisgICAgICAgICAgICAgICB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY4Lmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zNjkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zNzAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3MS5odG1sCisgICAgICAgICAgICAgICB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzcyLmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zNzMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3NC5odG1sCisgICAgICAg
ICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzc1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzYuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Ny5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzc4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzkuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODAuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4MS5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzgyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODMuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM4NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzg1Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODYu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTM4Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzg4Lmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zODkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTAu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTM5MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkyLmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zOTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5NC5odG1sCisgICAgICAgICAgICAgICB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk1
Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zOTYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5Ny5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzk4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTkuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQwLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDAuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQwMS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAyLmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDMu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQwNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA1Lmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00MDYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwNy5odG1sCisgICAgICAgICAgICAgICB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA4
Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00MDkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxLmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00MTAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMS5odG1sCisgICAgICAgICAgICAgICB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDEy
Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00MTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNC5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDE1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTYuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQx
Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDE4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTkuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjAuaHRtbAorICAgICAgICAgICAgICAg
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQy
MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDIyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjMuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQyNC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI1Lmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
MjYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNy5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI4Lmh0bWwKKyAg
ICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00MjkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzLmh0bWwKKyAgICAgICAgICAgICAg
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
MzAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzMS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMyLmh0bWwKKyAg
ICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00MzMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzNC5odG1sCisgICAgICAgICAgICAg
ICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDM1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzNy5odG1sCisg
ICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDM4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzkuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ0Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0MS5odG1sCisg
ICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDQyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDMuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ0NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDYuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ0Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ4Lmh0bWwKKyAgICAgICAgICAg
ICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00NDkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTAuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ1MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDUyLmh0bWwKKyAgICAgICAgICAg
ICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00NTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU1Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NTYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Ny5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDU4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NjAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2MS5odG1sCisgICAgICAgICAg
ICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDYyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2NC5odG1s
CisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDY1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjYuaHRtbAorICAgICAgICAg
ICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ2Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjkuaHRt
bAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQ3Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzAuaHRtbAorICAgICAgICAg
ICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ3MS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDcyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzMuaHRt
bAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQ3NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc1Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NzYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3Ny5odG1sCisgICAgICAgICAgICAgICB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc4Lmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00NzkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00ODAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4MS5odG1sCisgICAgICAgICAgICAgICB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDgyLmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00ODMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4NC5odG1sCisgICAgICAg
ICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDg1Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODYuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Ny5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDg4Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODkuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ5Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTAuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5MS5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDkyLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTMuaHRtbAorICAgICAg
ICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ5NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk1Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTYu
aHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ5Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk4Lmh0bWwKKyAgICAg
ICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00OTkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUuaHRtbAorICAgICAgICAgICAgICAgdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUwLmh0
bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS01MDAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUxLmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS01Mi5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU0Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS01NS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTYuaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTU3Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01OC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTkuaHRtbAorICAg
ICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYwLmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02MS5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNjIuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYzLmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS02NC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjUuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY2Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS02Ny5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjguaHRtbAorICAgICAgICAgICAg
ICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTY5Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03Lmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03MC5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNzEuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcyLmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03My5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNzQuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc1Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS03Ni5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzcuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc4Lmh0bWwK
KyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS03OS5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOC5odG1sCisgICAgICAgICAgICAg
ICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
ODAuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgxLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04Mi5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtODMuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg0Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04NS5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtODYuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg3Lmh0bWwKKyAgICAgICAg
ICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS04OC5odG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtODkuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkuaHRtbAor
ICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTkwLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05MS5odG1sCisgICAgICAgICAgICAg
ICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
OTIuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkzLmh0bWwKKyAgICAgICAgICAgICAgIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05NC5odG1sCisgICAg
ICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtOTUuaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk2Lmh0bWwKKyAgICAgICAgICAgICAgIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05Ny5o
dG1sCisgICAgICAgICAgICAgICB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtOTguaHRtbAorICAgICAgICAgICAgICAgdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk5Lmh0bWwKKworICAgICAg
ICAqIHBhZ2UvV2hlZWxFdmVudFRlc3RUcmlnZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldo
ZWVsRXZlbnRUZXN0VHJpZ2dlcjo6ZGVmZXJUZXN0c0ZvclJlYXNvbik6CisgICAgICAgIChXZWJD
b3JlOjpXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbik6
CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OnRyaWdnZXJUZXN0VGlt
ZXJGaXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vY29jb2EvU2Nyb2xsU25hcEFuaW1hdG9yU3Rh
dGUubW06CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbFNuYXBBbmltYXRvclN0YXRlOjp0ZWFyZG93bkFuaW1hdGlv
bkZvclN0YXRlKToKKwogMjAxNi0xMS0zMCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgc3BlY3VsYXRpdmUgY21ha2UgYnVpbGRmaXgg
YWZ0ZXIgcjIwOTA3MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2hlZWxFdmVudFRlc3RUcmln
Z2VyLmNwcAppbmRleCAzOTg4N2YxMzUyMjk0MTJlM2YwMzUyM2RmNGI1OTdiY2UzNzYwYzc1Li5l
N2M0ZGRiMmQ4Y2Y1YmY0N2UyYmM2MGIwM2IwZWI2MGM4MmNmYzA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1doZWVsRXZlbnRUZXN0VHJpZ2dlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9XaGVlbEV2ZW50VGVzdFRyaWdnZXIuY3BwCkBAIC03MCw2ICs3MCw5IEBAIHZv
aWQgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpkZWZlclRlc3RzRm9yUmVhc29uKFNjcm9sbGFibGVB
cmVhSWRlbnRpZmllciBpZGVudGlmCiAgICAgaWYgKGl0ID09IG1fZGVmZXJUZXN0VHJpZ2dlclJl
YXNvbnMuZW5kKCkpCiAgICAgICAgIGl0ID0gbV9kZWZlclRlc3RUcmlnZ2VyUmVhc29ucy5hZGQo
aWRlbnRpZmllciwgc3RkOjpzZXQ8RGVmZXJUZXN0VHJpZ2dlclJlYXNvbj4oKSkuaXRlcmF0b3I7
CiAgICAgCisgICAgaWYgKHJlYXNvbiA9PSBEZWZlclRlc3RUcmlnZ2VyUmVhc29uOjpTY3JvbGxT
bmFwSW5Qcm9ncmVzcykKKyAgICAgICAgV1RGTG9nQWx3YXlzKCI8V1A+OiBbJS4zZl0gPj4+IERl
ZmVycmluZyB0ZXN0IHRyaWdnZXIgZHVlIHRvIHNjcm9sbCBzbmFwLiIsIE1vbm90b25pY1RpbWU6
Om5vdygpLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7CisgICAgCiAgICAgTE9HKFdoZWVs
RXZlbnRUZXN0VHJpZ2dlcnMsICIgICAgICAoPSkgV2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpkZWZl
clRlc3RzRm9yUmVhc29uOiBpZD0lcCwgcmVhc29uPSVkIiwgaWRlbnRpZmllciwgcmVhc29uKTsK
ICAgICBpdC0+dmFsdWUuaW5zZXJ0KHJlYXNvbik7CiB9CkBAIC04MCw2ICs4Myw5IEBAIHZvaWQg
V2hlZWxFdmVudFRlc3RUcmlnZ2VyOjpyZW1vdmVUZXN0RGVmZXJyYWxGb3JSZWFzb24oU2Nyb2xs
YWJsZUFyZWFJZGVudGlmaWVyCiAgICAgYXV0byBpdCA9IG1fZGVmZXJUZXN0VHJpZ2dlclJlYXNv
bnMuZmluZChpZGVudGlmaWVyKTsKICAgICBpZiAoaXQgPT0gbV9kZWZlclRlc3RUcmlnZ2VyUmVh
c29ucy5lbmQoKSkKICAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChyZWFzb24gPT0gRGVm
ZXJUZXN0VHJpZ2dlclJlYXNvbjo6U2Nyb2xsU25hcEluUHJvZ3Jlc3MpCisgICAgICAgIFdURkxv
Z0Fsd2F5cygiPFdQPjogWyUuM2ZdIDw8PCBEb25lIGRlZmVycmluZyB0ZXN0IHRyaWdnZXIgZHVl
IHRvIHNjcm9sbCBzbmFwLiIsIE1vbm90b25pY1RpbWU6Om5vdygpLnNlY29uZHNTaW5jZUVwb2No
KCkudmFsdWUoKSk7CiAKICAgICBMT0coV2hlZWxFdmVudFRlc3RUcmlnZ2VycywgIiAgICAgICg9
KSBXaGVlbEV2ZW50VGVzdFRyaWdnZXI6OnJlbW92ZVRlc3REZWZlcnJhbEZvclJlYXNvbjogaWQ9
JXAsIHJlYXNvbj0lZCIsIGlkZW50aWZpZXIsIHJlYXNvbik7CiAgICAgaXQtPnZhbHVlLmVyYXNl
KHJlYXNvbik7CkBAIC0xMjYsOCArMTMyLDExIEBAIHZvaWQgV2hlZWxFdmVudFRlc3RUcmlnZ2Vy
Ojp0cmlnZ2VyVGVzdFRpbWVyRmlyZWQoKQogICAgIG1fdGVzdFRyaWdnZXJUaW1lci5zdG9wKCk7
CiAKICAgICBMT0coV2hlZWxFdmVudFRlc3RUcmlnZ2VycywgIiAgV2hlZWxFdmVudFRlc3RUcmln
Z2VyOjp0cmlnZ2VyVGVzdFRpbWVyRmlyZWQ6IEZJUklORyBURVNUIik7Ci0gICAgaWYgKGZ1bmN0
aW9uQ2FsbGJhY2spCisgICAgaWYgKGZ1bmN0aW9uQ2FsbGJhY2spIHsKKyAgICAgICAgV1RGTG9n
QWx3YXlzKCI8V1A+OiBbJS4zZl0gKioqIEZJUklORyBURVNUIFRSSUdHRVIgQ0FMTEJBQ0sgKioq
IiwgTW9ub3RvbmljVGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKKyAg
ICAgICAgV1RGTG9nQWx3YXlzKCI8V1A+OiAiKTsKICAgICAgICAgZnVuY3Rpb25DYWxsYmFjaygp
OworICAgIH0KIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29j
b2EvU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
b2NvYS9TY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5tbQppbmRleCA3ZTIwMTgxNjc1ZjA2MTk0ZTBi
OTMxMGFhYzg1NTc5MjIwMGFjNjY2Li4yN2UwYWRkMTdkMjMzYWVhY2Q3MGQ0MjIyNjkzNTMyMTU4
MGZlNmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9TY3JvbGxT
bmFwQW5pbWF0b3JTdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9T
Y3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5tbQpAQCAtMzYsNiArMzYsMjAgQEAgc3RhdGljIGlubGlu
ZSBmbG9hdCBwcm9qZWN0ZWRJbmVydGlhbFNjcm9sbERpc3RhbmNlKGZsb2F0IGluaXRpYWxXaGVl
bERlbHRhKQogewogICAgIHJldHVybiBpbmVydGlhbFNjcm9sbFByZWRpY3Rpb25GYWN0b3IgKiBp
bml0aWFsV2hlZWxEZWx0YTsKIH0KKyAgICAKK3N0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogc3Rh
dGVUb1N0cmluZyhTY3JvbGxTbmFwU3RhdGUgc3RhdGUpCit7CisgICAgc3dpdGNoIChzdGF0ZSkg
eworICAgIGNhc2UgU2Nyb2xsU25hcFN0YXRlOjpTbmFwcGluZzoKKyAgICAgICAgcmV0dXJuICJT
bmFwcGluZyI7CisgICAgY2FzZSBTY3JvbGxTbmFwU3RhdGU6OkdsaWRpbmc6CisgICAgICAgIHJl
dHVybiAiR2xpZGluZyI7CisgICAgY2FzZSBTY3JvbGxTbmFwU3RhdGU6OlVzZXJJbnRlcmFjdGlv
bjoKKyAgICAgICAgcmV0dXJuICJVc2VySW50ZXJhY3Rpb24iOworICAgIGNhc2UgU2Nyb2xsU25h
cFN0YXRlOjpEZXN0aW5hdGlvblJlYWNoZWQ6CisgICAgICAgIHJldHVybiAiRGVzdGluYXRpb25S
ZWFjaGVkIjsKKyAgICB9Cit9CiAKIHZvaWQgU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGU6OnRyYW5z
aXRpb25Ub1NuYXBBbmltYXRpb25TdGF0ZShjb25zdCBGbG9hdFNpemUmIGNvbnRlbnRTaXplLCBj
b25zdCBGbG9hdFNpemUmIHZpZXdwb3J0U2l6ZSwgZmxvYXQgcGFnZVNjYWxlLCBjb25zdCBGbG9h
dFBvaW50JiBpbml0aWFsT2Zmc2V0KQogewpAQCAtNTgsNiArNzIsOCBAQCB2b2lkIFNjcm9sbFNu
YXBBbmltYXRvclN0YXRlOjpzZXR1cEFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNuYXBTdGF0ZSBz
dGF0ZSwgY29ucwogICAgIG1fbW9tZW50dW1DYWxjdWxhdG9yID0gU2Nyb2xsaW5nTW9tZW50dW1D
YWxjdWxhdG9yOjpjcmVhdGUodmlld3BvcnRTaXplLCBjb250ZW50U2l6ZSwgaW5pdGlhbE9mZnNl
dCwgRmxvYXRQb2ludCh0YXJnZXRPZmZzZXRYLCB0YXJnZXRPZmZzZXRZKSwgaW5pdGlhbERlbHRh
LCBpbml0aWFsVmVsb2NpdHkpOwogICAgIG1fc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93
KCk7CiAgICAgbV9jdXJyZW50U3RhdGUgPSBzdGF0ZTsKKworICAgIFdURkxvZ0Fsd2F5cygiPFdQ
PjogWyUuM2ZdIFRyYW5zaXRpb25lZCBzY3JvbGwgc25hcCBzdGF0ZTogJXMiLCBNb25vdG9uaWNU
aW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCksIHN0YXRlVG9TdHJpbmcoc3Rh
dGUpKTsKIH0KIAogdm9pZCBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZTo6dHJhbnNpdGlvblRvVXNl
ckludGVyYWN0aW9uU3RhdGUoKQpAQCAtNzksNiArOTUsOCBAQCB2b2lkIFNjcm9sbFNuYXBBbmlt
YXRvclN0YXRlOjp0ZWFyZG93bkFuaW1hdGlvbkZvclN0YXRlKFNjcm9sbFNuYXBTdGF0ZSBzdGF0
ZSkKICAgICBtX21vbWVudHVtQ2FsY3VsYXRvciA9IG51bGxwdHI7CiAgICAgbV9zdGFydFRpbWUg
PSBNb25vdG9uaWNUaW1lKCk7CiAgICAgbV9jdXJyZW50U3RhdGUgPSBzdGF0ZTsKKworICAgIFdU
RkxvZ0Fsd2F5cygiPFdQPjogWyUuM2ZdIFRyYW5zaXRpb25lZCBzY3JvbGwgc25hcCBzdGF0ZTog
JXMiLCBNb25vdG9uaWNUaW1lOjpub3coKS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCksIHN0
YXRlVG9TdHJpbmcoc3RhdGUpKTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxTbmFwQW5pbWF0b3JT
dGF0ZTo6Y3VycmVudEFuaW1hdGVkU2Nyb2xsT2Zmc2V0KGJvb2wmIGlzQW5pbWF0aW9uQ29tcGxl
dGUpIGNvbnN0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNzQzZmY5Y2IzMGQyMzZmZGI4MjU5MTM1NDBlYjQzZGQ5Njk0ZGUzYy4uNDY2Mzc3YzRm
NDJmNzQ3YjYxMzNmZGMzMjcyNTExZWE1ODkxYWYyOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTExLTMwICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgc2Ny
b2xsIHNuYXBwaW5nIHRlc3RzIGFyZSBzdGlsbCBmbGFreSBhZnRlciByMjA5MDcwCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUxOTYKKworICAgICAg
ICBOb3RlOiBOb3QgYW4gYWN0dWFsIHBhdGNoLiBKdXN0IHRyeWluZyB0byBpbmR1Y2UgZmxha3kg
dGVzdCBmYWlsdXJlcyB3aXRoIGxvZ2dpbmcgb24gRVdTLgorCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdUUjo6RXZlbnRTZW5kaW5nQ29udHJvbGxlcjo6bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKToKKwogMjAxNi0xMS0yOSAgQ2FybG9zIEFsYmVydG8gTG9wZXogUGVy
ZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbTGludXhdIHJ1bi1iZW5jaG1hcmsg
c2hvdWxkIGJlIGFibGUgdG8gZXhlY3V0ZSB0aGUgYmVuY2htYXJrcyB3aXRoIG1vcmUgYnJvd3Nl
cnMuCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0V2
ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9FdmVudFNlbmRpbmdDb250cm9sbGVyLmNwcAppbmRleCBmODE5ODJjNmJmOGQyOWE5
YjEyNjFmM2IyZmNmYWIwYjJiZjBmYzg5Li5mNTM2OWVjOWU0NDg3ZjQyYmRjZTVkYTBhYWU5ZTZh
MDhmYWFkMGYyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5jcHAKQEAgLTM3LDYgKzM3
LDcgQEAKICNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0TWVudUl0ZW0uaD4KICNpbmNsdWRlIDxX
ZWJLaXQvV0tNdXRhYmxlRGljdGlvbmFyeS5oPgogI2luY2x1ZGUgPFdlYktpdC9XS051bWJlci5o
PgorI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgogCiBuYW1lc3BhY2UgV1RSIHsKQEAgLTQ1Myw2ICs0NTQsOCBAQCBzdGF0aWMgdWlu
dDY0X3QgY2dFdmVudE1vbWVudHVtUGhhc2VGcm9tU3RyaW5nKEpTU3RyaW5nUmVmIHBoYXNlU3Ry
KQogCiB2b2lkIEV2ZW50U2VuZGluZ0NvbnRyb2xsZXI6Om1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhpbnQgeCwgaW50IHksIEpTU3RyaW5nUmVmIHBoYXNlU3RyLCBKU1N0
cmluZ1JlZiBtb21lbnR1bVN0cikKIHsKKyAgICBXVEZMb2dBbHdheXMoIjxXUD46IFslLjNmXSAq
KiogU2ltdWxhdGluZyB3aGVlbCBldmVudCglZCwgJWQsICVzLCAlcykgKioqIiwgTW9ub3Rvbmlj
VGltZTo6bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpLCB4LCB5LCB0b1NURCh0b1dL
KHBoYXNlU3RyKSkuY19zdHIoKSwgdG9TVEQodG9XSyhtb21lbnR1bVN0cikpLmNfc3RyKCkpOwor
ICAgIAogICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBFdmVudFNlbmRlck1lc3NhZ2VOYW1l
KEFkb3B0V0ssIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFdmVudFNlbmRlciIpKTsK
ICAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5UmVmPiBFdmVudFNlbmRlck1lc3Nh
Z2VCb2R5KEFkb3B0V0ssIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKSk7CiAgICAgCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggOGU0NDM2NDcwOTcxYTM5YmU0MmY5NTQwMjJkOWM2ZGZlYTRlOTkyOS4uNGQzNzk2ZGJlYjFh
MzdiMmQ2YzBmYWRmYzc3ZDk3ZDU5NGIxMmY2OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwMTUgQEAKIDIw
MTYtMTEtMzAgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKKyAgICAg
ICAgU29tZSBzY3JvbGwgc25hcHBpbmcgdGVzdHMgYXJlIHN0aWxsIGZsYWt5IGFmdGVyIHIyMDkw
NzAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTE5
NgorCisgICAgICAgIE5vdGU6IE5vdCBhbiBhY3R1YWwgcGF0Y2guIEp1c3QgdHJ5aW5nIHRvIGlu
ZHVjZSBmbGFreSB0ZXN0IGZhaWx1cmVzIHdpdGggbG9nZ2luZyBvbiBFV1MuCisKKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0wLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEuaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEw
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MDAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAwLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAxLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAyLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xMDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA0Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xMDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA1Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xMDYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA2Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMDctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA3
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTA4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTA5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTExMC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTExLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTExMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTExMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTExMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE0LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTExNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE1LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExNS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE2LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExNi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE3LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExNy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE4
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExOC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTE5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExOS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTEyMC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjAuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTEyMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjEuaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTEyMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTEyMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjMuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEyNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjQuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTEyNS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjUu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyNi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MjYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyNy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMjcuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyOC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xMjguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyOS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xMjkuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTEzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzAtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTMwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzEtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTMxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTMyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTMzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzUtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzYt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM2Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MzctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM3Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMzgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM4Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xMzktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM5Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTQwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0MC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTQxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0MS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTQyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0Mi5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTQzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0My5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0
NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTE0NS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE0Ni5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE0Ny5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ4LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE0OC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ5LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTE0OS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1MC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNTAuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1MS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNTEuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1Mi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1My1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTMuaHRtbDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1NC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTQuaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1
NS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTE1Ni1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTYuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE1Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTcuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE1OC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTguaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE1OS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTkuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTE2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xNjAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYwLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNjEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYxLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNjItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYy
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTYzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTY0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMTY1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjYtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTY2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTY3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjgtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTY4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjktZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTY5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNy1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTcwLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3MC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTcxLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTcyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTcz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3My5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTc0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3NC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTc1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3NS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMTc2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Ni5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTc3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Ny5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTc4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3OC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTc5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3OS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTguaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTE4MC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODAu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
ODEuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4Mi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xODIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4My1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xODMuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4NC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xODQuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4NS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xODUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4Ni1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xODYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4Ny1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xODcuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4OC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xODguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4OS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODkuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTAtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTEt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkxLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
OTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkyLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xOTMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xOTQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xOTUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk1Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xOTYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk2Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xOTctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk3Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xOTgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk4Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xOTktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk5
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIw
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjAwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjA0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjA1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDYtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjA2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDctZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjA3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDgtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDktZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjEw
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjExLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjEyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjEzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMy5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjE0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjE1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjE2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNi5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjE3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjE4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIx
OC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjE5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIxOS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMjAuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yMjEuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yMjIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMy1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMjMuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yMjQuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yMjUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjcuaHRtbDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyOC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjguaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIy
OS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjkuaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yMzAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMwLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMzEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMxLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yMzItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMyLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yMzMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMzQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM0Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yMzUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM1Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yMzYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM2
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjM3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjM4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjM5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQwLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI0MC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQxLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI0MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQyLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI0Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI0My5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ0LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ1LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0NS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ2LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0Ni5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ3
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0Ny5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjQ4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0OC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjQ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0OS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI1MC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTAuaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI1MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTEuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI1Mi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTIuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI1My1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTMuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI1NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTQu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1NS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
NTUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1Ni1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yNTYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNTcuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1OC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yNTguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1OS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yNTkuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjAtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjYwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjEtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjYxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjItZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjYyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjYzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY1Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
NjYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY2Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yNjctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY3Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNjgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY4Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yNjktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY5Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yNy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjcwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3MC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjcxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3MS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjcyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3Mi5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjczLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3
My5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI3NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTI3NS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI3Ni5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc3LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI3Ny5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc4LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI3OC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc5LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI3OS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjgtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4MC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yODAuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4MS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODEuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4Mi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4My1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODMuaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4
NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI4NS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODUuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTI4Ni1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODYuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI4Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODcuaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI4OC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODguaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI4OS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODkuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yOTAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjkwLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yOTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjkx
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjkyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjkzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjk0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjk1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTYtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjk2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTctZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjk3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTgtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjk4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTktZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjk5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDAtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDEtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAyLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
MDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA0Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zMDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA1Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zMDYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA2Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMDctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA3Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zMDgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA4Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zMDktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA5Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzEwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMx
MC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzExLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTMxMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTMxMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMxMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE0LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTMxNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE1LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTMxNS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE2LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMxNi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE3LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTMxNy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE4LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxOC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE5LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxOS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyMC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjAuaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMy
MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjEuaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTMyMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTMyMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjMuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMyNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjQuaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTMyNS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTMyNi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjYuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMyNy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjcuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTMyOC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjgu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyOS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
MjkuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTMzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzMwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzMxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzMyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzMzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzM0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzM1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzYtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzM2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzctZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzgtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzkt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM5Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzQwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0MC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzQxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0MS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzQyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0Mi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzQzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0My5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzQ0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0NC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzQ1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0NS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzQ2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0Ni5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0
Ny5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTM0OC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM0OS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1MC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zNTAuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1MS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNTEuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1Mi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zNTIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1My1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zNTMuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1NC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNTQuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1NS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1Ni1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1Ny1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTcuaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1
OC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTguaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTM1OS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTkuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zNjAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYwLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zNjEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYxLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNjItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYyLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zNjMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYzLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zNjQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY0Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNjUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY1
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzY2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzY3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzY4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjktZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzY5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzcwLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM3MC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzcxLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM3MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzcyLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTM3Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzczLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3My5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc1LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3NS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc2
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Ni5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
Mzc3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Ny5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzc4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3OC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzc5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3OS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzguaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTM4MC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODAuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM4MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODEuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM4Mi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODIuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTM4My1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODMu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
ODQuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4NS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zODUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4Ni1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zODYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zODcuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4OC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zODguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4OS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zODkuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTAtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzkwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTEtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzkxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTItZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk0Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
OTUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk1Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zOTYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk2Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zOTctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk3Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zOTgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk4Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zOTktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk5Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MDAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAwLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00MDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAxLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00MDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAy
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDA0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDA1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDYtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDA2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDctZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDA3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDgtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDA4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDktZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDA5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDEwLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDExLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDEyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDEz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDE0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDE1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDE2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDE3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDE4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxOC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDE5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxOS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDIuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQyMC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjAu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
MjEuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00MjIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MjMuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00MjQuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00MjUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MjYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00MjcuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyOC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00MjguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyOS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjkuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzAtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzEt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMxLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
MzItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMyLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00MzMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMzLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MzQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00MzUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM1Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00MzYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM2Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MzctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM3Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00MzgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM4Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00MzktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM5
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ0MC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ0MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ0Mi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ0My5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ0NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ1LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQ0NS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ2LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ0Ni5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ3LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0Ny5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ4LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0OC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ5LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0OS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDUuaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1
MC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTAuaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ1MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTEuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ1Mi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTIuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ1My1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTMuaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ1NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTQuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ1NS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTUuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQ1Ni1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTYuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTcu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1OC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
NTguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1OS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00NTkuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDYwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjEtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDYxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDYyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDYzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjQtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDY0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDY1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjYtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjctZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00Njgt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY4Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
NjktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY5Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00Ny5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDcwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3MC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDcxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3MS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDcyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3Mi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDczLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3My5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDc0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3NC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDc1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3NS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDc2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3
Ni5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc3LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ3Ny5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ3OC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ3OS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDgtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4MC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00ODAuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4MS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00ODEuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Mi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00ODIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4My1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00ODMuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4NC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODQuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4NS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Ni1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODYuaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4
Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODcuaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ4OC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODguaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ4OS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODkuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00OTAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDkwLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00OTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDkxLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00OTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDkyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00OTMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDkzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00OTQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDk1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDk2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDk3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTgtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDk4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTktZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDk5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUwLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTUwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01MDAtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNTAwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01MS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS01MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNTIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTUzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01NC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS01NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTUtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNTUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU2LWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01Ny1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01Ny5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTgtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU5LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYwLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYwLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02MS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjIuaHRtbDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYzLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02NC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjUuaHRtbDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY2
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY2Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02
Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02Ny5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NjgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjguaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTY5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY5Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS03LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcuaHRtbDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTcwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcwLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS03MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03MS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNzItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTczLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTczLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS03NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03NC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNzUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTc2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc2Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS03Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03Ny5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNzgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzguaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTc5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc5Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS04LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTguaHRtbDogQWRkZWQu
CisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTgwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgwLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS04MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04MS5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtODItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtODIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTgzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS04NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04NC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtODUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtODUuaHRtbDog
QWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTg2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg2Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS04Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04Ny5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtODgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtODguaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTg5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg5Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS05LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkuaHRt
bDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTkwLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkwLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS05MS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHRp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05MS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtOTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB0
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTIu
aHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05
NC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
OTUuaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTk2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05Ny1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHRpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS05Ny5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB0aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtOTguaHRtbDogQWRkZWQuCisgICAgICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTk5Lmh0bWw6IEFkZGVkLgorCisyMDE2LTExLTMwICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCiAgICAgICAgIFVucmV2aWV3ZWQsIG1hcmsgdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLmh0bWwgYXMgZmxha3kK
IAogICAgICAgICBJdCBzZWVtcyB0aGVyZSBhcmUgYWRkaXRpb25hbCBjYXVzZXMgb2YgdGVzdCBm
YWlsdXJlcyB3aGVuIHNjcm9sbGluZyBpbiBpZnJhbWVzLiB3ZWJraXQub3JnL2IvMTY1MTk2IHdp
bGwgYmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0wLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0w
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTAtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0wLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0wLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jp
em9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
IDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAg
ICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54
ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQu
b2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9u
LnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYg
KGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxl
bWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBw
b3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9u
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFj
ayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiAr
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAg
ICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdl
IGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlk
ZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVk
ICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlk
ZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25M
b2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewor
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpv
bnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAg
ICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAg
ICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250
YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpv
bnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9
InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwi
ICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMS5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEuaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTEwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFk
N2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMC5odG1sIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAg
ICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRp
Y2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2Nr
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAg
ICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1l
bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zm
c2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAg
ICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJi
b2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAg
ZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2
aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIu
IEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8v
IE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAg
ICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
Y3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9p
bnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFt
ZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29u
dGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVu
dHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxv
YWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAz
MDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxU
YXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1h
aW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+
CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xMDAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwMC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDli
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDAtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEwMC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwMC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTAwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jp
em9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
IDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAg
ICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54
ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQu
b2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9u
LnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYg
KGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxl
bWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBw
b3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9u
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFj
ayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiAr
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAg
ICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdl
IGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlk
ZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVk
ICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlk
ZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25M
b2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewor
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpv
bnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAg
ICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAg
ICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250
YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpv
bnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9
InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwi
ICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTEwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAxLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTEwMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTAxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4
Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMDEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAg
ICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisK
KyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBh
cmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBs
b2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0
c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5l
eHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3Rl
ZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVk
UG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAw
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4n
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xh
c3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFt
ZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMTAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDIuaHRtbCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJj
ZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwMi5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTEwMy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwMy5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEw
My5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTAzLmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA0LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwNC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTA0Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMDQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTA1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xMDUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTEwNS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDYt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwNi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMDYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwNi5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEwNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA2Lmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwNy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTA3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEw
Ny1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA3Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTA3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDcuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MDgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTA4LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDguaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwOC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xMDktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwOS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMDktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTEwOS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEwOS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTA5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTExLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEu
aHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEuaHRt
bApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAg
ICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9z
aXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAg
ICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNu
YXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBm
b3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIp
OworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
dmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUg
aUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBw
b2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9u
KQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24g
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5k
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
ICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRp
b246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6
b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9
InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEwLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMTAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNi
ZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEw
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTAuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMTAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZl
YTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExMC5odG1sCkBAIC0wLDAgKzEs
MTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9Owor
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVs
ZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0
aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9w
OworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRv
IHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxU
b3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9y
IHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25s
b2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7
IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
dmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3Zl
cnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEx
MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1
M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTEtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExMS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExMS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTExLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
KworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBw
b3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9
IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQ
YXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9
IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhw
ZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFr
ZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9s
bGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
IEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgp
OyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4
OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZy
YW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTExMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTEyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTEyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMTIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTEzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTEzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MTMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMTMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEx
My5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTExNC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMTQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExNC5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTExNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE0Lmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExNS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTE1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExNS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE1Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE1Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTE2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTYtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE2LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xMTYuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTYuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTExNi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xMTctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExNy1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMTctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTExNy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExNy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTE3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExOC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTE4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTExOC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE4Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTE4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTguaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE5LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xMTktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTE5LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMTkuaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MTkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTExOS5odG1sCkBAIC0wLDAgKzEsMTYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1l
bnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9u
LnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVy
dGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRp
Y2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4
YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTEyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jp
em9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
IDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAg
ICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54
ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQu
b2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9u
LnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYg
KGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxl
bWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBw
b3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9u
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFj
ayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiAr
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAg
ICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdl
IGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlk
ZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVk
ICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlk
ZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25M
b2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewor
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpv
bnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAg
ICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAg
ICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250
YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpv
bnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9
InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwi
ICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTEyMC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIwLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTEyMC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTIwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4
Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMjAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAg
ICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisK
KyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBh
cmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBs
b2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0
c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5l
eHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3Rl
ZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVk
UG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAw
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4n
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xh
c3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFt
ZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIxLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMjEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMTIxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjEuaHRtbCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMjEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJj
ZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyMS5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTEyMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyMi5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEy
Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIyLmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyMy1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTIzLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTIzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMjMuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTI0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTI0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xMjQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTEyNC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyNS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMjUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyNS5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEyNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTI1Lmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyNi1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTI2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEy
Ni1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTI2Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTI2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjYuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTI3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MjctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTI3LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyNy5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xMjgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyOC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMjgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTEyOC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEyOC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTI4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTEyOS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTI5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEyOS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgor
IAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTI5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTI5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MjkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2
YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAg
ICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVu
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2Nh
dGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lk
ZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQg
c25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBv
c2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9z
aXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUn
LCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9
Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5o
dG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjli
ZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTEzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMy5odG1sIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTEzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMy5odG1sCkBAIC0wLDAgKzEs
MTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9Owor
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVs
ZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0
aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9w
OworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRv
IHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxU
b3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9y
IHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25s
b2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7
IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
dmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3Zl
cnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEz
MC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1
M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzAtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzMC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzMC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTMwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
KworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBw
b3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9
IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQ
YXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9
IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhw
ZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFr
ZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9s
bGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
IEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgp
OyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4
OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZy
YW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTEzMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTMxLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTMxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTMxLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xMzEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTMyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTMyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MzIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMzIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEz
Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEzMy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xMzMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzMy5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTEzMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTMzLmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzNC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTM0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzNC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM0Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTM1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM1LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xMzUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTEzNS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xMzYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzNi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xMzYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTEzNi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTM2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzNy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTM3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTEzNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM3Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTM3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzcuaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM4LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xMzgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTM4LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzguaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
MzguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzOC5odG1sCkBAIC0wLDAgKzEsMTYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1l
bnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9u
LnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVy
dGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRp
Y2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzOS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xMzktZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzOS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTEzOS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTM5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAg
IC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKwor
ICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3Np
dGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVs
ZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJl
bnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBv
c2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAg
ICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVsw
XSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50
ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBv
c2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNu
YXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0
ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBz
dXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkg
PSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVk
IChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4
cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
aG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+
CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+
CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhv
cml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
aG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIg
Y2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1l
Lmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMTQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAg
ICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisK
KyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBh
cmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBs
b2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0
c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5l
eHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3Rl
ZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVk
UG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAw
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4n
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xh
c3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFt
ZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQwLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNDAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMTQwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDAuaHRtbCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xNDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJj
ZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0MC5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDEtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE0MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDEtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0MS5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0
MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQxLmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0Mi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTQyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNDIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTQzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNDMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE0My5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0NC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xNDQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0NC5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE0NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ0Lmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0NS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTQ1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0
NS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ1Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTQ1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDUuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
NDYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ2LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDYuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDYuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0Ni5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xNDctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0Ny1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTE0Ny5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0Ny5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTQ3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTE0OC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE0OC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgor
IAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTQ4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
NDguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2
YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAg
ICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVu
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2Nh
dGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lk
ZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQg
c25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBv
c2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9z
aXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUn
LCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9
Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5o
dG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTQ5LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNDktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJi
OWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTQ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNDkuaHRtbCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNDkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIz
NDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE0OS5odG1sCkBAIC0w
LDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxh
eTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFy
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9
IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hp
bGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9
IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBi
YWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50Lgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVs
YXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgw
ODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
KworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBw
b3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9
IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQ
YXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9
IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhw
ZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFr
ZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9s
bGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
IEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgp
OyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4
OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZy
YW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTE1MC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUwLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1MC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTUwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUwLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xNTAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTUxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTUxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
NTEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1
MS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE1Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xNTItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1Mi5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE1Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUyLmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1My1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTUzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1My1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUzLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTUzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTMuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTU0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTU0LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNTQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE1NC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xNTUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1NS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNTUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE1NS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1NS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTU1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1Ni1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTU2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE1Ni1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTU2Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTU2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTYuaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTU3LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNTctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTU3LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTcuaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
NTcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1Ny5odG1sCkBAIC0wLDAgKzEsMTYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1l
bnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9u
LnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVy
dGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRp
Y2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1OC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNTgtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1OC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1OC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTU4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAg
IC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKwor
ICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3Np
dGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVs
ZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJl
bnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBv
c2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAg
ICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVsw
XSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50
ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBv
c2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNu
YXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0
ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBz
dXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkg
PSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVk
IChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4
cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
aG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+
CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+
CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhv
cml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
aG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIg
Y2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1l
Lmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE1OS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTU5LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE1OS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBA
QAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTU5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTU5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5
ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNTkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJw
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHls
ZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwor
ICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0
aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVt
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRU
b3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVu
dCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9m
ZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAp
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHBy
b3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2Ug
ICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1
c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFt
ZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8g
dGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBl
eHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4
cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
YmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRp
diBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAg
IDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdl
dCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1h
aW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGlj
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUy
ZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNi5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTE2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNi5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjAtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE2MC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjAtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2MC5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2
MC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYwLmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2MS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYxLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2MS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTYxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYxLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNjEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTYyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNjIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE2Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2My1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xNjMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2My5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE2My5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTYzLmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2NC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTY0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2
NC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTY0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTY0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjQuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTY1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
NjUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTY1LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2NS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xNjYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2Ni1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTE2Ni5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2Ni5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTY2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTE2Ny1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTY3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE2Ny1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgor
IAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTY3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTY3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
NjcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2
YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAg
ICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVu
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2Nh
dGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lk
ZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQg
c25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBv
c2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9z
aXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUn
LCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9
Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5o
dG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTY4LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNjgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJi
OWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTY4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjguaHRtbCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNjguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIz
NDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2OC5odG1sCkBAIC0w
LDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxh
eTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFy
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9
IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hp
bGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9
IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBi
YWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50Lgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVs
YXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE2OS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdl
ODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNjktZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2
ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2OS5odG1sIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE2OS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTY5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVy
dGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRp
b24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCAr
Ii4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBw
b2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNh
bFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwt
bWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTE3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDli
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTcwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMTcwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
NzAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNzAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3
MC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzEtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE3MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xNzEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3MS5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE3MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTcxLmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTcyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Mi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTcyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTcyLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTczLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTczLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNzMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzMuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE3My5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xNzQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3NC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xNzQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE3NC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTc0Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3NS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTc1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE3NS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTc1Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTc1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzUuaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTc2LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNzYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTc2LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzYuaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
NzYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Ni5odG1sCkBAIC0wLDAgKzEsMTYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1l
bnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9u
LnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVy
dGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRp
Y2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Ny1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzctZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Ny5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3Ny5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTc3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAg
IC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKwor
ICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3Np
dGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVs
ZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJl
bnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBv
c2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAg
ICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVsw
XSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50
ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBv
c2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNu
YXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0
ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBz
dXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkg
PSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVk
IChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4
cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
aG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+
CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+
CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhv
cml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
aG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIg
Y2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1l
Lmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE3OC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTc4LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3OC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBA
QAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTc4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTc4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5
ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xNzguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJw
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHls
ZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwor
ICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0
aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVt
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRU
b3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVu
dCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9m
ZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAp
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHBy
b3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2Ug
ICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1
c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFt
ZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8g
dGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBl
eHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4
cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
YmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRp
diBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAg
IDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdl
dCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1h
aW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGlj
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTc5
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTc5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xNzku
aHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xNzkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBj
OTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE3OS5o
dG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhp
ZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAg
IG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAg
ICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBw
b3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAg
ICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9u
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
Iik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRo
ZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFw
IHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRp
b24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlv
biArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdl
bmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9k
aXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9y
aXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwi
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNi
ZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTgt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4Lmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4Lmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4MC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTgwLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4MC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTgwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTgwLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xODAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTgxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODEtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTgxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xODEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE4MS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0xODItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4Mi5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE4Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTgyLmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4My1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTgzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4
My1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTgzLmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTgzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODMuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTg0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
ODQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTg0LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4NC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0xODUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4NS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTE4NS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4NS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTg1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTE4Ni1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTg2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE4Ni1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgor
IAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MTg2Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTg2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
ODYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2
YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAg
ICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVu
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2Nh
dGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lk
ZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQg
c25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBv
c2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9z
aXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUn
LCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9
Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5o
dG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTg3LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xODctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJi
OWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTg3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODcuaHRtbCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xODcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIz
NDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4Ny5odG1sCkBAIC0w
LDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxh
eTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFy
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9
IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hp
bGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9
IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBi
YWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50Lgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVs
YXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE4OC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdl
ODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xODgtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2
ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4OC5odG1sIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4OC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTg4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVy
dGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRp
b24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCAr
Ii4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBw
b2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNh
bFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwt
bWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTE4OS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTg5LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJk
OWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE4OS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTg5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTg5Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xODkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAg
ICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVu
dC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkg
eworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRp
b24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRp
b24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBi
YWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAi
ICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGds
aWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEds
aWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jp
em9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAg
ICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpv
bnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jp
em9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFz
cz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRt
bCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMTktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTE5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xOS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
OS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTAtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE5MC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0xOTAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5MC5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE5MC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkwLmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5MS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTkxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5MS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkxLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMTkyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTkyLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xOTIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTE5Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0xOTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5My1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0xOTMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE5My5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5My5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMTkzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5NC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTk0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTE5NC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTk0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTQuaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk1LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xOTUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk1LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTUuaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
OTUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5NS5odG1sCkBAIC0wLDAgKzEsMTYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1l
bnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9u
LnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVy
dGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRp
Y2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5Ni1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTYtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5Ni5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5Ni5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMTk2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAg
IC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKwor
ICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3Np
dGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVs
ZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJl
bnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBv
c2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAg
ICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVsw
XSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50
ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBv
c2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNu
YXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0
ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBz
dXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkg
PSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVk
IChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4
cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
aG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+
CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+
CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhv
cml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
aG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIg
Y2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1l
Lmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTE5Ny1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk3LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5Ny1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBA
QAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMTk3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5
ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0xOTcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJw
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHls
ZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwor
ICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0
aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVt
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRU
b3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVu
dCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9m
ZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAp
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHBy
b3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2Ug
ICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1
c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFt
ZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8g
dGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBl
eHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4
cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
YmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRp
diBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAg
IDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdl
dCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1h
aW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGlj
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk4
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMTk4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTgu
aHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0xOTguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBj
OTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5OC5o
dG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhp
ZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAg
IG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAg
ICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBw
b3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAg
ICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9u
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
Iik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRo
ZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFw
IHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRp
b24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlv
biArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdl
bmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9k
aXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9y
aXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwi
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0xOTktZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTE5OS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVj
M2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0x
OTktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTE5OS5odG1sIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTE5OS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0
ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMTk5Lmh0bWwKQEAgLTAsMCAr
MSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxz
dHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307
CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAo
ZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9z
aXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRU
b3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sg
dG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
IT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJn
ZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9u
b3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0
b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBv
bmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2
ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
dmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTIwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
MC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTIwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMC5o
dG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhp
ZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAg
IG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAg
ICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBw
b3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAg
ICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9u
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
Iik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRo
ZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFw
IHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRp
b24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlv
biArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdl
bmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9k
aXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9y
aXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwi
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDAtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIwMC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVj
M2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
MDAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwMC5odG1sIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTIwMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0
ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjAwLmh0bWwKQEAgLTAsMCAr
MSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxz
dHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307
CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAo
ZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9z
aXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRU
b3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sg
dG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
IT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJn
ZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9u
b3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0
b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBv
bmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2
ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
dmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjAxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgy
NDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwMS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjAxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjAxLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
OworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55
ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNl
dFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55
ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9k
eSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlv
dXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBF
eHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBN
YWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Ny
b2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50
cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRp
bnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2Fk
KCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAw
cHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFy
Z2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWlu
ZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMDIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIwMi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yMDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwMy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yMDMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIwMy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjAzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwNC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjA0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTIwNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA0Lmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDQuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA1LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMDUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA1LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDUuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwNS5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yMDYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwNi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDYtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTIwNi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwNi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjA2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTIwNy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA3LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjA3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMDcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA4LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjA4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDguaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMDguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwOC5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTIwOS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMDkt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIwOS5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIwOS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjA5Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAg
ICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVu
dC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkg
eworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRp
b24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRp
b24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBi
YWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAi
ICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGds
aWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEds
aWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jp
em9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAg
ICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpv
bnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jp
em9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFz
cz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRt
bCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjEwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTAtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjEwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitU
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVy
dGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMTAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcx
ZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTIxMC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTEtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQw
OTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yMTEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMS5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIxMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4
YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjExLmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjEyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZl
MDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjEyLmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjEyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEy
ZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTIuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjEzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjEzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxMy5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yMTQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTIxNC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjE0Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIx
NS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjE1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIxNS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjE1
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjE1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTUu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjE2LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMTYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjE2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTYuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMTYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNi5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIxNy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTctZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxNy5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjE3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTIxOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjE4LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIxOC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjE4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjE4Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMTguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjE5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjE5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yMTkuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMTkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIxOS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxv
Y2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQ
b3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDAp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1l
Lmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJi
OWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyLmh0bWwgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyLmh0bWwKQEAgLTAsMCAr
MSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxz
dHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307
CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAo
ZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9z
aXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRU
b3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sg
dG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
IT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJn
ZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9u
b3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0
b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBv
bmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2
ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
dmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjIwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgy
NDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjIwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjIwLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
OworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55
ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNl
dFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55
ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9k
eSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlv
dXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBF
eHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBN
YWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Ny
b2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50
cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRp
bnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2Fk
KCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAw
cHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFy
Z2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWlu
ZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjIxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjEtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjIxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMjEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjEuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIyMS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yMjItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yMjItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIyMi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjIyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyMy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjIzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTIyMy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjIzLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjIzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjMuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI0LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMjQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI0LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjQuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNC5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yMjUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTIyNS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjI1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTIyNi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI2LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjI2Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMjYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI3LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjI3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjcuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMjcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyNy5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjgtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTIyOC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjgt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyOC5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIyOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI4Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyOS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI5
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIyOS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjI5Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMjkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yMy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMy5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzAtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzMC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQw
OTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yMzAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzMC5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIzMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4
YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMwLmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzMS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjMxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZl
MDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzMS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMxLmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjMxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEy
ZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzEuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzIt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjMyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzMi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yMzMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzMy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTIzMy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjMzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIz
NC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTIzNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM0
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjM0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzQu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM1LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMzUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjM1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzUuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMzUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzNS5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIzNi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzYtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzNi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzNi5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTIzNy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM3LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzNy1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjM3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM3Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yMzcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjM4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjM4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yMzguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTIzOC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxv
Y2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQ
b3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDAp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1l
Lmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yMzktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTIzOS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0
MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yMzktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTIzOS5odG1sIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTIzOS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNk
MjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjM5Lmh0bWwKQEAg
LTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2
YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9u
ID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3
aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54
ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVk
IGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIg
KyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRp
Y2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFt
ZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQu
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBy
ZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdl
ODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
OworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55
ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNl
dFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55
ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9k
eSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlv
dXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBF
eHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBN
YWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Ny
b2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50
cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRp
bnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2Fk
KCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAw
cHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFy
Z2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWlu
ZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjQwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDAtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNDAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDAuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI0MC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yNDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0MS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yNDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI0MS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjQxLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0Mi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjQyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTI0Mi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQyLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjQyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDIuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNDMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDMuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0My5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yNDQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0NC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI0NC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0NC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjQ0Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI0NS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ1LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0NS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjQ1Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNDUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ2LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjQ2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDYuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNDYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0Ni5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI0Ny1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDct
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0Ny5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI0Ny5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ3Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0OC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ4
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI0OC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ4Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjQ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjQ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0
IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yNDkuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNDkuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJl
MTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI0OS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
NS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1Lmh0
bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1Lmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1MC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjUwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZl
MDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1MC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjUwLmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjUwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEy
ZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTAuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjUxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTEt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjUxLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTEuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1MS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yNTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1Mi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI1Mi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjUyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1
My1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjUzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI1My1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjUz
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjUzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTMu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNTQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjU0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTQuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNTQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1NC5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI1NS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1NS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1NS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI1Ni1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU2LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1Ni1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjU2Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU2Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNTYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjU3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTctZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjU3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yNTcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI1Ny5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxv
Y2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQ
b3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDAp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1l
Lmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTgtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI1OC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0
MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNTgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1OC5odG1sIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI1OC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNk
MjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU4Lmh0bWwKQEAg
LTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2
YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9u
ID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3
aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54
ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVk
IGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIg
KyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRp
Y2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFt
ZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQu
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBy
ZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1OS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjU5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFk
N2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI1OS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU5Lmh0bWwgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjU5
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNTkuaHRtbApAQCAtMCwwICsxLDE2MyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgor
ICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52
ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhl
bGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3Np
dGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50
Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAg
ICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
ICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUg
cHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVs
ICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFw
IHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93
LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVs
RXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0i
b25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0
aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9
InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRp
Y2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNh
bC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwv
ZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJk
OWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yNi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yNjAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2MC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0yNjAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI2MC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2MC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjYwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2MS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjYxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTI2MS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjYxLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjYxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjEuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjYyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNjItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjYyLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjIuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yNjMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2My1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI2My5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2My5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjYzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI2NC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY0LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2NC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjY0Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNjQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY1LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjY1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjUuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNjUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2NS5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjYtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI2Ni1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjYt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2Ni5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI2Ni5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY2Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2Ny1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY3
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2Ny1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY3Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjY4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjgtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0
IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yNjguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNjguaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJl
MTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI2OC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
NjktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2OS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNjktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAK
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI2
OS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI2OS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4
MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjY5
Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFy
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAg
ICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRp
b24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUg
dGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNu
YXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0
aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBv
c2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48
L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJo
b3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRt
bCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVj
M2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
Ny1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjcuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yNy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjcuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjcwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzAt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjcwLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzAuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3MC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yNzEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3MS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI3MS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjcxLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3
Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjcyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI3Mi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjcy
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjcyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzIu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjczLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNzMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjczLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzMuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNzMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3My5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI3NC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzQtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3NC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3NC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc0Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI3NS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc1LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3NS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjc1Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc1Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yNzUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjc2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjc2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yNzYuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI3Ni5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxv
Y2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQ
b3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDAp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1l
Lmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI3Ny1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0
MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yNzctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3Ny5odG1sIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI3Ny5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNk
MjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc3Lmh0bWwKQEAg
LTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2
YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9u
ID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3
aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54
ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVk
IGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIg
KyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRp
Y2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFt
ZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQu
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBy
ZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3OC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjc4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFk
N2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI3OC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc4Lmh0bWwgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc4
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzguaHRtbApAQCAtMCwwICsxLDE2MyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgor
ICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52
ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhl
bGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3Np
dGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50
Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAg
ICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
ICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUg
cHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVs
ICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFw
IHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93
LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVs
RXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0i
b25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0
aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9
InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRp
Y2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNh
bC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwv
ZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjc5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4
YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjc5LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jp
em9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yNzkuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yNzkuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI3OS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAu
aG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhp
ZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAg
IG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAg
ICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRp
b24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVt
ZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50
KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3Np
dGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAg
IGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0p
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9
IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1
cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3Np
dGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFw
IGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVk
ICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3Vy
ZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2
YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAo
Z2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBl
Y3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
R2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIp
IHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hv
cml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgor
ICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgor
ICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jp
em9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hv
cml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNs
YXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5o
dG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjgtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTI4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4MC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjgwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTI4MC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjgwLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjgwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODAuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjgxLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yODEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjgxLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODEuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODEu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4MS5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yODItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4Mi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI4Mi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4Mi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjgyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI4My1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjgzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4My1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjgzLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjgzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yODMuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjg0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODQuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yODQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4NC5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI4NS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODUt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4NS5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI4NS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg1Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4Ni1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg2
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4Ni1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg2Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg2Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMjg3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODctZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0
IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yODcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODcuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJl
MTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI4Ny5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0y
ODgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4OC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yODgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAK
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4
OC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI4OC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4
MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg4
Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFy
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAg
ICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRp
b24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUg
dGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNu
YXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0
aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBv
c2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48
L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJo
b3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRt
bCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI4OS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjg5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjli
ZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI4OS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjg5Lmh0bWwgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjg5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQw
YTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yODkuaHRtbApAQCAtMCww
ICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAg
PHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6
IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJw
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlw
dD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7
fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAg
ICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxl
IChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBw
b3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFj
ayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRh
cmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Ny
b2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBo
b25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkg
PSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9u
aXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0
aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cisg
ICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgy
NDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0yOTAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5MC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI5MC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5MC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMjkwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5
MS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjkxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTI5MS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjkx
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjkxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTEu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjkyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yOTItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MjkyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTIuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yOTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5Mi5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI5My1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5My5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5My5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjkzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTI5NC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjk0LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5NC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMjk0Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjk0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0yOTQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMjk1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMjk1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0yOTUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTI5NS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxv
Y2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQ
b3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDAp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1l
Lmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTYtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI5Ni1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0
MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0yOTYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5Ni5odG1sIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTI5Ni5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNk
MjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjk2Lmh0bWwKQEAg
LTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2
YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9u
ID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3
aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54
ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVk
IGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIg
KyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRp
Y2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFt
ZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQu
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBy
ZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5Ny1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjk3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFk
N2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5Ny1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjk3Lmh0bWwgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjk3
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTcuaHRtbApAQCAtMCwwICsxLDE2MyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgor
ICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52
ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhl
bGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3Np
dGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50
Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAg
ICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
ICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUg
cHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVs
ICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFw
IHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93
LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVs
RXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0i
b25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0
aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9
InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRp
Y2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNh
bC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwv
ZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMjk4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTgtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4
YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMjk4LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jp
em9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0yOTguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTguaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTI5OC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAu
aG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhp
ZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAg
IG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAg
ICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRp
b24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVt
ZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50
KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3Np
dGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAg
IGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0p
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9
IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1
cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3Np
dGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFw
IGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVk
ICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3Vy
ZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2
YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAo
Z2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBl
Y3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
R2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIp
IHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hv
cml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgor
ICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgor
ICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jp
em9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hv
cml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNs
YXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5o
dG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0yOTktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5OS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0yOTktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAK
K1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2
ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTI5OS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTI5OS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1
NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMjk5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+
CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAg
ICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlv
biBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9w
OworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQg
PT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZz
ZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9w
ZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAg
CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0
IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRo
ZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhw
ZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBl
Y3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkg
fSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Jl
Z2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYg
c3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8
ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQi
IGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWlu
ZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2Fs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMy5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMw
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAu
aG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhp
ZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAg
IG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAg
ICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRp
b24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVt
ZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50
KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3Np
dGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAg
IGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0p
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9
IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1
cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3Np
dGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFw
IGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVk
ICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3Vy
ZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2
YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAo
Z2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgi
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBl
Y3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
R2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIp
IHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hv
cml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgor
ICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgor
ICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jp
em9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hv
cml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNs
YXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5o
dG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9i
b2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zMDAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwMC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAK
K1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2
ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMwMC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1
NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzAwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+
CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAg
ICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlv
biBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9w
OworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQg
PT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZz
ZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9w
ZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAg
CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0
IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRo
ZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhw
ZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBl
Y3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkg
fSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Jl
Z2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYg
c3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8
ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQi
IGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWlu
ZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2Fs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwMS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUy
ZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTMwMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jp
em9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAxLmh0
bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzAxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkx
YThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDEuaHRt
bApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAg
ICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9z
aXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAg
ICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNu
YXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBm
b3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIp
OworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
dmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUg
aUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBw
b2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9u
KQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24g
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5k
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
ICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRp
b246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6
b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9
InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAyLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNi
ZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAy
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDIuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZl
YTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwMi5odG1sCkBAIC0wLDAgKzEs
MTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9Owor
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVs
ZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0
aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9w
OworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRv
IHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxU
b3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9y
IHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25s
b2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7
IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
dmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3Zl
cnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMw
My1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1
M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDMtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwMy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwMy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzAzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
KworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBw
b3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9
IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQ
YXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9
IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhw
ZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFr
ZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9s
bGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
IEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgp
OyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4
OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZy
YW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTMwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA0LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzA0Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMDQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzA1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzA1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
MDUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMw
NS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDYtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMwNi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMDYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwNi5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMwNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA2Lmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwNy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzA3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwNy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA3Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzA4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDgtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzA4LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zMDguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMDguaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMwOC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zMDktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwOS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMDktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTMwOS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMwOS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzA5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0
MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEuaHRtbCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEuaHRtbApAQCAtMCww
ICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAg
PHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6
IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJw
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9
Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlw
dD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7
fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAg
ICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxl
IChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBw
b3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFj
ayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRh
cmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Ny
b2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAg
ICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBo
b25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkg
PSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9u
aXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5
IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0
aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cisg
ICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMTAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgw
ODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEwLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVy
dGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTAuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxMC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAg
ICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRp
Y2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2Nr
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAg
ICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1l
bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zm
c2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAg
ICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJi
b2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAg
ZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2
aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIu
IEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8v
IE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAg
ICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
Y3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9p
bnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFt
ZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29u
dGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVu
dHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxv
YWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAz
MDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxU
YXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1h
aW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+
CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zMTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxMS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDli
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTEtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMxMS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxMS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzExLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jp
em9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
IDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAg
ICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54
ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQu
b2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9u
LnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYg
KGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxl
bWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBw
b3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9u
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFj
ayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiAr
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAg
ICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdl
IGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlk
ZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVk
ICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlk
ZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25M
b2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewor
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpv
bnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAg
ICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAg
ICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250
YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpv
bnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9
InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwi
ICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTMxMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTMxMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzEyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4
Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMTIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAg
ICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisK
KyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBh
cmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBs
b2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0
c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5l
eHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3Rl
ZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVk
UG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAw
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4n
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xh
c3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFt
ZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzEzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMTMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzEzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTMuaHRtbCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMTMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJj
ZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxMy5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMxNC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxNC5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMx
NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE0Lmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxNS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE1LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxNS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzE1Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE1Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMTUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzE2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTYtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zMTYuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMxNi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTct
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxNy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMTctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxNy5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMxNy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE3Lmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxOC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzE4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMx
OC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE4Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzE4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTguaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
MTktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzE5LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTkuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMTkuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMxOS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzItZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTMyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+
CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAg
ICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlv
biBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9w
OworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQg
PT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZz
ZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9w
ZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAg
CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0
IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRo
ZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhw
ZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBl
Y3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkg
fSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Jl
Z2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0Pgor
ICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYg
c3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8
ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQi
IGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWlu
ZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2Fs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyMC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUy
ZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTMyMC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jp
em9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIwLmh0
bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzIwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkx
YThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjAuaHRt
bApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAg
ICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9z
aXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAg
ICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNu
YXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBm
b3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIp
OworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
dmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUg
aUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBw
b2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9u
KQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24g
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5k
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
ICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRp
b246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6
b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9
InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIxLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMjEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNi
ZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIx
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjEuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMjEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZl
YTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyMS5odG1sCkBAIC0wLDAgKzEs
MTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9Owor
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVs
ZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0
aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9w
OworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRv
IHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxU
b3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9y
IHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25s
b2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7
IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
dmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3Zl
cnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMy
Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1
M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyMi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyMi5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
KworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBw
b3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9
IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQ
YXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9
IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhw
ZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFr
ZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9s
bGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
IEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgp
OyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4
OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZy
YW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTMyMy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIzLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyMy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzIzLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzIzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMjMuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzI0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzI0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
MjQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMjQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMy
NC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMyNS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMjUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyNS5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMyNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzI1Lmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyNi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzI2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyNi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzI2Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzI2Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzI3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjctZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzI3LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zMjcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjcuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMyNy5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zMjgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyOC1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMjgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTMyOC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzI4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMyOS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzI5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMyOS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzI5Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzI5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMjkuaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFk
N2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMy5odG1sIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMy5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAg
ICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRp
Y2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2Nr
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAg
ICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3
aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1l
bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zm
c2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAg
ICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJi
b2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAg
ZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2
aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIu
IEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8v
IE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAg
ICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
Y3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVz
dFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9p
bnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFt
ZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29u
dGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZl
bnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVu
dHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxv
YWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAz
MDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxU
YXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1h
aW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+
CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zMzAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzMC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDli
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzAtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMzMC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzMC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzMwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jp
em9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
IDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAg
ICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54
ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQu
b2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9u
LnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYg
KGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxl
bWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBw
b3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9u
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFj
ayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiAr
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAg
ICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdl
IGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlk
ZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVk
ICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlk
ZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25M
b2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewor
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpv
bnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAg
ICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAg
ICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250
YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpv
bnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9
InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwi
ICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTMzMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzMxLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTMzMS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzMxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzMxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4
Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zMzEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAg
ICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisK
KyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBh
cmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBs
b2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0
c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5l
eHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3Rl
ZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVk
UG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAw
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4n
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xh
c3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFt
ZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzMyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMzItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzMyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzIuaHRtbCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMzIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJj
ZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzMi5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzMtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMzMy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzMy5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMz
My5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzMzLmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzNC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM0LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzNC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzM0Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zMzQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzM1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zMzUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTMzNS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzYt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzNi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zMzYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzNi5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTMzNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM2Lmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzNy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzM3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMz
Ny1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM3Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzM3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzcuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
MzgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzM4LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzguaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzOC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zMzktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzOS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zMzktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTMzOS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTMzOS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzM5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTM0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQu
aHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQuaHRt
bApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAg
ICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9z
aXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAg
ICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNu
YXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBm
b3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIp
OworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
dmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAg
ICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUg
aUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBw
b2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9u
KQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24g
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5k
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
ICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRp
b246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6
b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9
InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQwLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNDAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNi
ZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQw
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDAuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zNDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZl
YTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0MC5odG1sCkBAIC0wLDAgKzEs
MTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9Owor
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVs
ZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0
aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9w
OworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRv
IHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxU
b3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9y
IHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25s
b2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7
IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
dmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3Zl
cnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0
MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1
M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDEtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0MS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0MS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQxLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
KworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBw
b3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9
IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQ
YXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9
IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhw
ZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFr
ZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9s
bGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
IEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgp
OyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4
OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZy
YW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM0Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQyLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0Mi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzQyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNDIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzQzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzQzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NDMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNDMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0
My5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDQtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM0NC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zNDQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0NC5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM0NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ0Lmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0NS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzQ1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0NS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ1Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ1Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzQ2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDYtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ2LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zNDYuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDYuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM0Ni5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zNDctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0Ny1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNDctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM0Ny5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0Ny5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzQ3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0OC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM0OC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ4Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzQ4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDguaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ5LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zNDktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzQ5LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNDkuaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NDkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM0OS5odG1sCkBAIC0wLDAgKzEsMTYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1l
bnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9u
LnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVy
dGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRp
Y2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4
YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTM1Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jp
em9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
IDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJ
c0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAg
ICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54
ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQu
b2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9u
LnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYg
KGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxl
bWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBw
b3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9u
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFj
ayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiAr
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAg
ICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdl
IGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlk
ZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVk
ICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlk
ZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25M
b2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgewor
ICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpv
bnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwv
c2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAg
ICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAg
ICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250
YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpv
bnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9
InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwi
ICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM1MC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUwLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTM1MC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzUwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4
Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zNTAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAg
ICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisK
KyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBh
cmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBs
b2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0
c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5l
eHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3Rl
ZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVk
UG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAw
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4n
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xh
c3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFt
ZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUxLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNTEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzUxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTEuaHRtbCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJj
ZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1MS5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM1Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1Mi5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1
Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUyLmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1My1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUzLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1My1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzUzLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzUzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNTMuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzU0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzU0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zNTQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM1NC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1NS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNTUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1NS5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM1NS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzU1Lmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1Ni1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzU2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1
Ni1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzU2Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzU2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTYuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzU3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NTctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzU3LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTcuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1Ny5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zNTgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1OC1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNTgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM1OC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM1OC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzU4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTM1OS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzU5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM1OS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgor
IAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzU5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzU5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NTkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2
YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAg
ICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVu
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2Nh
dGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lk
ZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQg
c25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBv
c2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9z
aXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUn
LCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9
Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5o
dG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjli
ZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTM2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNi5odG1sIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNi5odG1sCkBAIC0wLDAgKzEs
MTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5
bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9Owor
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVs
ZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0
aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9w
OworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRv
IHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdl
dCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpT
VGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxU
b3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9y
IHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9y
V2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25s
b2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7
IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
dmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3Zl
cnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAg
ICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2
MC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1
M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjAtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2MC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2MC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
KworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBw
b3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9
IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQ
YXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9
IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhw
ZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFr
ZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9s
bGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
IEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgp
OyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4
OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZy
YW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM2MS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYxLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2MS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzYxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYxLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNjEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzYyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzYyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NjIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNjIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2
Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM2My1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zNjMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2My5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM2My5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzYzLmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2NC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzY0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2NC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY0Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzY1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY1LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zNjUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM2NS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zNjYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2Ni1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNjYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM2Ni5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2Ni5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzY2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2Ny1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzY3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM2Ny1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY3Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzY3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjcuaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY4LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zNjgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzY4LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjguaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NjguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2OC5odG1sCkBAIC0wLDAgKzEsMTYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1l
bnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9u
LnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVy
dGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRp
Y2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2OS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNjktZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2OS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM2OS5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzY5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAg
IC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKwor
ICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3Np
dGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVs
ZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJl
bnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBv
c2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAg
ICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVsw
XSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50
ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBv
c2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNu
YXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0
ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBz
dXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkg
PSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVk
IChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4
cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
aG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+
CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+
CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhv
cml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
aG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIg
Y2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1l
Lmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTM3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNy1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAg
ICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAg
ICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Njcmlw
dD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAg
ICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9m
ZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisK
KyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBh
cmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBs
b2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBk
ZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0
c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5l
eHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3Rl
ZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVk
UG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAw
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4n
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25v
bmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAg
PC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHls
ZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xh
c3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFt
ZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxs
ZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0i
Y29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzcwLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNzAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtMzcwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzAuaHRtbCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNzAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJj
ZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3MC5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzEtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM3MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzEtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3MS5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3
MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzcxLmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzcyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Mi1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzcyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzcyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zNzIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzczLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzMtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzczLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zNzMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM3My5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3NC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zNzQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3NC5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM3NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc0Lmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3NS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzc1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3
NS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc1Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzc1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzUuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NzYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc2LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzYuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzYuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Ni5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zNzctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Ny1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM3Ny5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3Ny5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzc3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTM3OC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc4LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM3OC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgor
IAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
Mzc4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzc4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
NzguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2
YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAg
ICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVu
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2Nh
dGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lk
ZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQg
c25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBv
c2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9z
aXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUn
LCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9
Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5o
dG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzc5LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zNzktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJi
OWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzc5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zNzkuaHRtbCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zNzkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIz
NDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM3OS5odG1sCkBAIC0w
LDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxh
eTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFy
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9
IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hp
bGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9
IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBi
YWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50Lgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVs
YXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgw
ODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzgtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzguaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAg
ICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRv
dy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsK
KworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBw
b3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9
IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQ
YXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9
IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAg
ICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHki
KVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVt
ZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3Vz
IHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhw
ZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7Cisg
ICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFr
ZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9s
bGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMu
IEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNl
bmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygp
OworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgp
OyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4
OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdl
dCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZy
YW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM4MC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzgwLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4MC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzgwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzgwLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zODAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
MzgxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtMzgxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
ODEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zODEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4
MS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODItZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM4Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5
YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS0zODItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4Mi5odG1sIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM4Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0
MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzgyLmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4My1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzgzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4
MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4My1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzgzLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzgzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODMuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtMzg0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5
YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzg0LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zODQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM4NC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS0zODUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4NS1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zODUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM4NS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4NS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFk
OGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzg1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVy
eSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdo
dDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1
ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAg
ICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOwor
CisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQ
YXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91
bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIg
bG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisg
ICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoi
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91
dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBu
ZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0
ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3Rl
ZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwg
MCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAw
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2lu
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdu
b25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5
bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2
PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZy
YW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNs
YXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJh
bWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVp
Z2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4Ni1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzg2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM4Ni1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzg2Lmh0bWwg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzg2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODYuaHRtbApA
QCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAg
ICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAg
ICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAg
PHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAg
IHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRp
b24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAg
IHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBw
ZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3Ig
IiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOwor
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVy
dGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAg
ICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZy
YW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2lu
dC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQor
ICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4i
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlk
IG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAg
ICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3Np
dGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBz
dGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAg
IDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246
IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0
aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2Pgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3
aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzg3LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zODctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzg3LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODcuaHRtbCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
ODcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJm
ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4Ny5odG1sCkBAIC0wLDAgKzEsMTYz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+
CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRo
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAg
LnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5l
LWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVz
KGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1l
bnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9u
LnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAg
ICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRo
ZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQg
Z290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcp
IH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVz
dCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRM
YWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxH
bGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAg
ICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNu
YXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIg
ZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
d2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0
KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0g
d2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5k
b3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hl
ZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2Fk
PSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdp
ZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25h
cCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVy
dGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRp
Y2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+
PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAg
PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4OC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zODgtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4OC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4OC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzg4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAg
IC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5q
c1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKwor
ICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3Np
dGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVs
ZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJl
bnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQu
b2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBv
c2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAg
ICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVsw
XSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50
ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJl
dHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBv
c2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNu
YXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0
ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVh
bFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAg
ICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBz
dXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkg
PSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVk
IChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2Vk
KCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4
cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAg
IGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlv
biA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlv
bi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOwor
ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgn
aG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+
CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+
CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29y
a3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhv
cml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
aG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIg
Y2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1l
Lmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAg
ICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTM4OS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzg5LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM4OS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBA
QAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzg5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzg5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5
ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zODkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJw
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHls
ZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwor
ICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0
aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVt
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRU
b3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVu
dCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9m
ZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAp
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHBy
b3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2Ug
ICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1
c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFt
ZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8g
dGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBl
eHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4
cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
YmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRp
diBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAg
IDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdl
dCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1h
aW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGlj
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUy
ZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTM5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOS5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThi
Y2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOS5odG1sCkBA
IC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAg
ICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAg
dmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlv
biA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAg
d2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBl
ZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBv
c2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0
aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAg
IGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJh
bWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50
LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiAr
IHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5j
dGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRl
ci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAg
PGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjog
cmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+Cisg
ICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVz
b3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTAtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM5MC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTAtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5MC5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5
MC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZl
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkwLmh0bWwKQEAgLTAsMCArMSwxNjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4K
KyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAu
dmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAg
ICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
ZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAg
ICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9z
aXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVu
dC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24u
eCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7Cisg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhl
IHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJl
bCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0Jykg
fSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5k
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5n
Q29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAg
ICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25h
cCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1
cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVl
bEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9
Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lk
dGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxp
ZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0
aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGlj
YWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8
L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5MS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkxLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5MS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzkxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkxLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS0zOTEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
Lmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisg
ICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxl
bWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVu
dCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9z
aXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBd
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0
dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAg
ICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9z
aXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25h
cCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3Rl
ZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAg
ICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1
cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVu
Y3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAg
IHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAg
dmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQg
KGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQ
b3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
ImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhw
ZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0
KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5j
YWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7Cisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdo
b3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4K
KyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4K
KyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9y
aXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9o
b3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBj
bGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUu
aHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtMzkyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTItZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zOTIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTM5Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9
IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7Cisg
ICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rp
b24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1l
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRv
cDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50
ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zm
c2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYg
c2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAg
ICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJv
cGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAg
IAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVz
dCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0
dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0
aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4
cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhw
ZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwp
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdi
ZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9s
bGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4K
KyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAg
PGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0
IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFp
bmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNh
bEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5My1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
MmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS0zOTMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5My5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM5My5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5
MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzkzLmh0
bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAg
ICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAg
ICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBv
c2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAg
ICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBz
bmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0
dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24g
Zm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4i
KTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAg
ICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRl
c3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhl
IGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
Y2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAg
cG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlv
bikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9u
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAK
KyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJv
ZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2Vu
ZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVz
KGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0
aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rp
dj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jp
em9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3Jj
PSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5NC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzk0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMz
YmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5
NC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk0Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzk0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRm
ZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTQuaHRtbApAQCAtMCwwICsx
LDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0
eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChl
bGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3Np
dGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRv
cDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxM
ZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0
byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAh
PSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdl
dExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJn
ZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Ny
b2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAg
ICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25v
ciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAg
dmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdu
b25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
d2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRv
cldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9u
bG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZl
OyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xs
LXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9
InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92
ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAw
cHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAg
ICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
OTUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0
NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk1LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRF
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5NS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAg
ICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsK
KyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2Fs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5k
b3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7
CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAg
cG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0
UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVt
ZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkg
PSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAg
ICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5
IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxl
bWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAg
ICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAg
ICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91
cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4
cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOwor
ICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
ICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAg
ICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1h
a2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0p
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAg
ICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3Jv
bGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRz
LiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25h
cFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOwor
ICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
ICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9z
aXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9z
aXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGlu
dWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMo
KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQo
KTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBw
eDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJl
IHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJn
ZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5m
cmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+
CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+Cisg
ICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS0zOTYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5Ni1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTM5Ni5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5Ni5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtMzk2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9u
dGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwv
c3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBm
dW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zm
c2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFy
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVs
ZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVu
dC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3Np
dGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhl
IGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0
byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9u
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBl
bHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExh
YmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0x
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFy
ZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBl
eHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQp
IHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
PT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIg
KyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRM
YWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2
YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbics
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2Fk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAg
ICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2Ny
aXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAg
IDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAg
ICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVy
bHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxU
YXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRh
bC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZl
cnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBz
dHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAg
IDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTM5Ny1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTM5Ny1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgor
IAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
Mzk3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtMzk3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0z
OTcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsK
KyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAz
MDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2
YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0
aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNl
dExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAg
ICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVu
dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBo
YXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2Nh
dGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAg
ICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1
ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lk
ZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0
TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRp
b24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQg
c25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBv
c2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9z
aXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7Cisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3
aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3Rh
cnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUn
LCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9o
ZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0i
cG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVz
dHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVz
LjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9
Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5o
dG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5
IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6
IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk4LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS0zOTgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJi
OWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtMzk4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTguaHRtbCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS0zOTguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIz
NDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5OC5odG1sCkBAIC0w
LDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxh
eTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFy
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9
IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hp
bGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9
IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBi
YWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50Lgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVs
YXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTktZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTM5OS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdl
ODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS0zOTktZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2
ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5OS5odG1sIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTM5OS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtMzk5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVy
dGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRp
b24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCAr
Ii4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBw
b2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNh
bFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwt
bWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlm
NTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5
NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MC5odG1sIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MC5odG1sCkBAIC0w
LDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAg
ICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAg
ICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14
OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxh
eTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2Ny
aXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFy
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nv
b3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9
IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hp
bGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9
IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBi
YWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
KyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNh
bFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZp
bmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25h
cCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1l
bnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5z
Y3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50Lgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90
IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAg
ICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZy
YW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9u
LnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0
UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5t
b25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJv
ZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVs
YXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBz
Y3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3Vy
Y2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRo
OiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQwMC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdl
ODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDAtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2
ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwMC5odG1sIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwMC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVy
dGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRp
b24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCAr
Ii4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBw
b2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNh
bFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwt
bWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQwMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAxLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJk
OWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwMS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDAxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAxLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00MDEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAg
ICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVu
dC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkg
eworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRp
b24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRp
b24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBi
YWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAi
ICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGds
aWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEds
aWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jp
em9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAg
ICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpv
bnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jp
em9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFz
cz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRt
bCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDItZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDAyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitU
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVy
dGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MDIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcx
ZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQwMi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwMy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQw
OTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00MDMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwMy5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQwMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4
YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDAzLmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwNC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDA0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZl
MDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwNC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA0Lmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEy
ZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDQuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA1LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwNS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00MDYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwNi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQwNi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwNi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDA2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQw
Ny1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA3LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQwNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA3
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDA3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDcu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA4LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MDgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDA4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDguaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MDguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwOC5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQwOS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MDktZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwOS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQwOS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDA5Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwt
c25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxH
YWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAg
aGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJw
eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHls
ZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOwor
ICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0
aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVt
ZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRU
b3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVu
dCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9m
ZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9u
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAg
ICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAp
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHBy
b3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2Ug
ICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1
c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFt
ZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8g
dGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBl
eHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4
cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAg
ICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
YmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3Jv
bGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRp
diBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAg
IDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBp
biBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdl
dCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1h
aW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGlj
YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxl
PSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRt
bD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDEw
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDEwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTAu
aHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00MTAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBj
OTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMC5o
dG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhp
ZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAg
IG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAg
ICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBw
b3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAg
ICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9u
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
Iik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRo
ZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFw
IHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRp
b24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlv
biArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdl
bmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9k
aXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9y
aXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwi
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTEtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQxMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVj
M2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
MTEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMS5odG1sIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQxMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0
ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDExLmh0bWwKQEAgLTAsMCAr
MSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxz
dHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307
CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAo
ZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9z
aXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRU
b3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sg
dG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
IT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJn
ZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9u
b3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0
b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBv
bmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2
ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
dmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDEyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgy
NDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxMi1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDEyLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDEyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
OworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55
ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNl
dFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55
ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9k
eSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlv
dXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBF
eHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBN
YWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Ny
b2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50
cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRp
bnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2Fk
KCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAw
cHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFy
Z2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWlu
ZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDEzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDEzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MTMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQxMy5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00MTQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00MTQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQxNC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDE0Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDE1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQxNS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDE1Lmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDE1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTUuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDE2LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MTYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDE2LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTYuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTYu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNi5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00MTctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTctZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQxNy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxNy5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDE3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQxOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDE4LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxOC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDE4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDE4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MTguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDE5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDE5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MTkuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MTkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQxOS5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00Mi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDItZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyLmh0bWwgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVy
dGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRp
b24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCAr
Ii4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBw
b2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNh
bFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwt
bWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQyMC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDIwLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJk
OWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyMC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDIwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDIwLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00MjAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAg
ICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVu
dC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkg
eworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRp
b24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRp
b24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBi
YWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAi
ICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGds
aWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEds
aWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jp
em9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAg
ICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpv
bnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jp
em9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFz
cz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRt
bCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDIxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjEtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDIxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitU
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVy
dGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MjEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcx
ZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQyMS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyMi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQw
OTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00MjItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyMi5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQyMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4
YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDIyLmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyMy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDIzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZl
MDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyMy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDIzLmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDIzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEy
ZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjMuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI0LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00MjUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQyNS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDI1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQy
Ni1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQyNi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI2
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDI2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjYu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI3LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MjctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDI3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjcuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MjcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyNy5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQyOC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MjgtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyOC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyOC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQyOS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI5LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQyOS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDI5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDI5Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MjkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisg
CitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9y
IGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
My5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00My5o
dG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFk
PgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhp
ZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAg
IG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAg
ICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25J
bldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBw
b3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVm
dDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAg
ICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9z
aXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50Owor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFj
dHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9u
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
Iik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAg
ICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRo
ZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJl
bF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFw
IHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRp
b24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRp
diBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlv
biArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRv
d1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBv
c1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAs
ICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdl
bmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRl
cyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+
CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0
aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9k
aXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9y
aXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwi
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNy
Yz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAw
cHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xl
Ij48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzAtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQzMC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVj
M2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
MzAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzMC5odG1sIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQzMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0
ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMwLmh0bWwKQEAgLTAsMCAr
MSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxz
dHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307
CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAo
ZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9z
aXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRU
b3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sg
dG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
IT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJn
ZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9u
b3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0
b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBv
bmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2
ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
dmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzMS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDMxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgy
NDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzMS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMxLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMxLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
OworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55
ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNl
dFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55
ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9k
eSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlv
dXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBF
eHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBN
YWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Ny
b2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50
cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRp
bnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2Fk
KCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAw
cHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFy
Z2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWlu
ZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDMyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDMyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MzIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzIuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQzMi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00MzMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzMy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00MzMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQzMy5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDMzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzNC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDM0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQzNC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM0Lmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDM0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzQuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM1LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MzUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM1LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzUuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzNS5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00MzYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzNi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzYtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQzNi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzNi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDM2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQzNy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM3LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzNy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDM3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00MzcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM4LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDM4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzguaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00MzguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzOC5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00MzktZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQzOS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00Mzkt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQzOS5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQzOS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDM5Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAg
ICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVu
dC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkg
eworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRp
b24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRp
b24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBi
YWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAi
ICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGds
aWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEds
aWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jp
em9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAg
ICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpv
bnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jp
em9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFz
cz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRt
bCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDQwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDAtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDQwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitU
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVy
dGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NDAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcx
ZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ0MC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDEtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQw
OTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00NDEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0MS5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ0MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4
YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQxLmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0Mi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDQyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZl
MDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0Mi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQyLmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDQyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEy
ZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDIuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDMt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQzLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDMuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0My5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00NDQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0NC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ0NC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDQ0Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0
NS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ1LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ0NS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ1
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDQ1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDUu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ2LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NDYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDQ2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDYuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NDYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0Ni5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ0Ny1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDctZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0Ny5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0Ny5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQ0OC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ4LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ0OC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDQ4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDQ4Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NDguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDQ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDQ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00NDkuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NDkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ0OS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxv
Y2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQ
b3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDAp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1l
Lmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJi
OWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Lmh0bWwgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Lmh0bWwKQEAgLTAsMCAr
MSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxz
dHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1
dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAg
ICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7
CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZy
YW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRp
bmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307
CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAo
ZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9z
aXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRU
b3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sg
dG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24g
IT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJn
ZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIs
IGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFy
Z2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAg
ICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5i
b2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAg
ICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9u
b3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0g
d2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVU
YXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZ
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkg
eyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0
b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBv
bmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2
ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9s
bC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlk
PSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMv
dmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMw
MHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAg
ICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1MC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDUwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgy
NDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1MC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDUwLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDUwLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
OworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55
ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNl
dFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55
ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9k
eSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlv
dXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBF
eHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBN
YWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Ny
b2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50
cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRp
bnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2Fk
KCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAw
cHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFy
Z2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWlu
ZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDUxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTEtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDUxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NTEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTEuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ1MS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00NTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00NTItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ1Mi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDUyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1My1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDUzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ1My1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDUzLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDUzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTMuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU0LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NTQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU0LWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTQuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1NC5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00NTUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1NS1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTUtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ1NS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1NS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDU1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ1Ni1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU2LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Ni1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDU2Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NTYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU3LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDU3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTcuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NTcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1Ny5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTgtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ1OC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTgt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1OC5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ1OC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU4Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1OS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU5
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ1OS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDU5Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NTkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00Ni5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00Ni5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjAtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2MC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQw
OTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS00NjAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2MC5odG1s
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ2MC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4
YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDYwLmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2MS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDYxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZl
MDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2MS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDYxLmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDYxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEy
ZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjEuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDYyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjIt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDYyLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00NjMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2My1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ2My5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2My5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDYzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2
NC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ2NC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY0
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDY0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjQu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY1LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NjUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDY1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjUuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NjUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2NS5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ2Ni1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjYtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2Ni5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2Ni5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY2Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQ2Ny1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY3LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2Ny1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDY3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY3Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NjcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDY4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDY4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00NjguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ2OC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxv
Y2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQ
b3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDAp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1l
Lmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NjktZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ2OS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0
MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NjktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ2OS5odG1sIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ2OS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNk
MjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDY5Lmh0bWwKQEAg
LTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2
YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9u
ID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3
aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54
ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVk
IGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIg
KyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRp
Y2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFt
ZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQu
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBy
ZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00Ny1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdl
ODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00Ny1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00Ny5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAg
ICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAg
ICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3Np
dGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
OworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAg
IHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55
ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNl
dFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxl
bWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55
ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9k
eSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVs
ZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAg
ICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlv
dXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBF
eHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsg
YWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsK
KyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAg
ICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBN
YWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
YmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1l
Qm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAg
ICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Ny
b2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQ
YXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50
cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQ
b3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNu
YXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVz
W3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bv
c2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bv
c2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRp
bnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50
U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRz
KCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2Fk
KCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAw
cHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVy
ZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFy
Z2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWlu
ZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1l
PgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDcwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzAtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDcwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NzAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzAuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ3MC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00NzEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3MS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00NzEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ3MS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDcxLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3Mi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDcyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ3Mi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDcyLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDcyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzIuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDczLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NzMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDczLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzMuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3My5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00NzQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3NC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ3NC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3NC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDc0Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ3NS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc1LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3NS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDc1Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00NzUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc2LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDc2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzYuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00NzYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3Ni5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ3Ny1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00Nzct
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3Ny5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ3Ny5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc3Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3OC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc4
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ3OC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc4Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc4Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDc5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzktZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDc5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0
IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00NzkuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00NzkuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJl
MTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ3OS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
OC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Lmh0
bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Lmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4MC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDgwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZl
MDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4MC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDgwLmh0bWwgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDgwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEy
ZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODAuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDgxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODEt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNi
MzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDgxLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtz
IHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxU
YXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODEuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4MS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAg
ICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAg
ICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2Fs
bGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhl
aWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxv
dy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQor
ICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cu
anNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisK
KyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9z
aXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBl
bGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFy
ZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50
Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBw
b3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5Iilb
MF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVu
dCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNj
cm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAg
ICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBw
b3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBz
bmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVj
dGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRM
YWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIg
KyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAg
ICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93
UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93
UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ug
c3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdh
bicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRM
YWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAg
ICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAg
ICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxl
ZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBF
eHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0
aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRl
c3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
b2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFy
Z2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAg
ICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
LmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9y
U2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsK
KyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3Qo
J2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsi
PgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsi
PgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdv
cmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJo
b3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDog
MzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQi
IGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFt
ZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+Cisg
ICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAg
PC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00ODItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Mi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4g
aWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1Mg
ZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ4Mi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Mi5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUx
OWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDgyLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFs
R2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAg
IGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsK
KyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87Cisg
ICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5
bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsK
KyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5j
dGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxl
bWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0
VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBl
bGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5v
ZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlv
bjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRp
diBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAg
ICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
KQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBw
cm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBz
Y3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNl
ICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVs
ICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAg
ICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0g
LTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxv
Y2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBq
dXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFs
UG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3Rl
ZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBl
Y3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRv
IHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0g
ZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xs
ZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBl
eHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9j
dW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIg
ZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3Rh
cnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0
aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Ny
b2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxk
aXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAg
ICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkg
aW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJn
ZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1t
YWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJh
bWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRp
Y2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHls
ZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4
My1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDgzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTQ4My1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhh
dCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBo
b3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQg
dG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDgz
Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDgzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgw
YzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODMu
aHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAg
ICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdp
ZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAg
ICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBo
aWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAg
ICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAg
PHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisg
ICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9u
SW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAg
ICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0
UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChh
Y3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlv
biBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVz
dCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAg
ICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1Zygi
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkg
PSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRh
cmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlm
cmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRv
d0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1gg
PSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAg
ICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVU
YXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8o
c3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0
aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24g
PSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25h
cCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0
aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJk
aXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRp
b24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFy
IGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5Owor
IAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAg
ICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5k
b3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQ
b3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAw
LCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAn
ZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0
ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFk
PgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMg
dGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwv
ZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhv
cml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1s
IiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAg
ICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMw
MHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDg0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00ODQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDg0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwt
c25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8g
bmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRv
dy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODQuaHRtbCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00ODQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBh
NGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4NC5odG1sCkBAIC0wLDAg
KzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8
c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAg
IHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4
OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0i
Li4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3Jk
aW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9
OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUg
KGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBv
c2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0
VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRM
YWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNr
IHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAi
LCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRh
cmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3Qo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAor
ICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAg
ICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAg
ICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMo
aWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0
aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIg
c3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRI
ZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0
YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0
YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQu
Ym9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5j
bGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdl
dC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBz
aG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAg
ICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhv
bm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBn
b3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdl
dExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9
IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1l
VGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLngg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9z
WSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25p
dG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkg
b25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3Jv
bGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWln
aHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBp
ZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2Vz
L3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAz
MDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAg
ICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Nj
cm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ4NS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUg
d29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0
aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4NS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4NS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDg1Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAg
ICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAg
ICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGlj
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAg
ICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdp
bmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVu
dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24u
eSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZz
ZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVs
ZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24u
eSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJv
ZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBl
bGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlm
cmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAg
ICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAg
ICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZp
b3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQg
bm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4g
RXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiAr
IGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7
CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2
YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJn
ZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3
aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQp
OworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3
aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8g
TWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsg
fSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAg
ICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAg
ICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRo
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNj
cm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0
UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2lu
dHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFs
UG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIp
OworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1l
c1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0
aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQ
b3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQ
b3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250
aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVu
dFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50
cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRl
VGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9h
ZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMw
MHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1
cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUg
aWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdp
ZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRh
cmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFp
bmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFt
ZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4K
KyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTQ4Ni1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDg2LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4Ni1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNDg2Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDg2Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00ODYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6
b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47
CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJn
aW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0
bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
PC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElz
QXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAg
IGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7
CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5v
ZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgewor
ICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQ
YXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24u
eSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVt
ZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBv
c2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNr
IHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsg
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRp
b24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBo
b25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAg
IGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0
TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7Cisg
ICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdo
b3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0g
LTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAg
ZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9u
ID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9u
LnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2Ug
YXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24o
KSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRv
dy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAg
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRl
ZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlv
biA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQg
IiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisK
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRl
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVs
XS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlk
ZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJl
Zm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAt
MTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2Fu
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25v
bmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEds
aWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxv
YWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9u
dGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9z
Y3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAg
ICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAg
ICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRh
bFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9u
dGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48
L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0i
dmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIg
IHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAg
ICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtNDg3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODctZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDg3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00ODcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhm
ODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ4Ny5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAg
IDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAg
ICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAg
ICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAg
IHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9j
YXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKwor
ICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAg
ICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5v
ZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFy
ZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAg
ICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxv
Y2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBw
b2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAg
ICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRl
YnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7
CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
dGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbklu
V2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1v
dmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRz
aWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAg
ZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJn
ZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRp
b24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4
dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVk
UG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQ
b3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDAp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVU
YXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJv
ZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9
IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhz
dGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9u
ZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxl
PSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5U
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFz
cz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1l
Lmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxl
cnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdo
dDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODgtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ4OC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0
MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00ODgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4OC5odG1sIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ4OC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNk
MjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDg4Lmh0bWwKQEAg
LTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAg
ICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93
LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNw
bGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOwor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2lu
OiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxz
Y3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2
YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9s
bFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93
Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9u
ID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3
aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54
ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAg
ICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5v
ZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVk
IGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIg
KyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRp
Y2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAg
ZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFw
VGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGlu
YXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93
UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9z
WCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFt
ZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFm
dGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVj
a0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAg
ICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1
bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJv
ZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQu
CisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAg
ICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBu
b3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwg
YnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsg
dGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVC
b2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Ny
b2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhp
ZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRp
b24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhl
aWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3Rh
cnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8
Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBy
ZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAg
ICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFs
R2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9
ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNv
dXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lk
dGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4OS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDg5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFk
N2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ4OS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDg5Lmh0bWwgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDg5
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00ODkuaHRtbApAQCAtMCwwICsxLDE2MyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgor
ICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBv
dmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAg
ICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52
ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1i
bG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3Jv
bGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhl
bGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3Np
dGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50
Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3Np
dGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAg
ICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAg
ICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
CisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9w
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
CisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUg
cHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2
IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVs
ICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdv
dCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9
LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRp
dlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAg
ICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRh
cmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsg
MC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0Owor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kp
OyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdD
b21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIg
aWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykg
eworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0
OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAg
IGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAg
IHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFw
IHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBh
Y3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCAr
ICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cu
ZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4
ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJh
bWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAg
ICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdp
bmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7
CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICog
aWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdp
bmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywg
J2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93
LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVs
RXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0i
b25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0
aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlm
cmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9
InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBw
eDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRp
Y2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNh
bC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwv
ZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNDktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJk
OWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5LWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9u
dGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
c25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00OS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00OS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpv
bnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsK
KyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdp
bjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRv
OworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8
L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNB
c3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xp
ZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAg
ZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9
IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9m
ZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7Cisg
ICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBh
cmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55
ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChl
bGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1l
bnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9z
aXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRo
ZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgor
ICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sg
dG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlv
bik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigp
IHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAg
ZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRM
YWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZv
cmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAt
MTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRp
b25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBk
eSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24g
PSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAg
ICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQu
Y2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24u
eSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBh
cmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigp
IHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9
CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93
LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVk
KSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9u
ID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNj
cm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAi
ICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKwor
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0
TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7
CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxd
LmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAg
dmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVm
b3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0x
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFy
IHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50
V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4n
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRl
clNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xp
ZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9h
ZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAg
ICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Bl
cmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFs
VGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250
YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwv
aWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2
ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAg
c3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5Pgor
PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS00OTAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5MC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS00OTAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ5MC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5MC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
NDkwLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAg
PGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAg
ICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAg
ICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAg
ICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAg
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsK
KworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAg
dmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2Nh
dGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisg
ICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAg
ICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExl
ZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9m
ZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJl
bnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQg
aGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9j
YXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0
aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFy
Z2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlk
ZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAg
ICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVi
dWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAg
PSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5X
aW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQ
b3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92
ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNp
ZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBm
dW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0
TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rhcmdl
dExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0
aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0
IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQ
b3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4
dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBv
c2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRh
cmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAg
IHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9k
eTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlm
cmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0g
d2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0
YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25l
JywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9
InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRl
c3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1l
cy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNz
PSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUu
aHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAg
ICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVy
eSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0
OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5MS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDkxLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQy
YjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZy
YW1lLTQ5MS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Ny
b2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDkxLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDkxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTEuaHRtbApAQCAt
MCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAg
ICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAg
ICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3ct
eDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBw
eDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3Bs
YXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZh
ciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dD
b29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24g
PSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdo
aWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLngg
PSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAg
ICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9m
ZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5z
Y3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQg
YmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiAr
IHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFw
ICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisg
ICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGlj
YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3Jv
bGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdl
dC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5h
dGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQ
b3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NY
LCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1l
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5n
ZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0
ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNr
Rm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAg
ICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3Vt
ZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9k
eS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVU
YXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4K
KyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAg
ICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5v
dCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBi
dXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0
YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJv
ZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAg
ICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3Jv
bGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlm
cmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlv
bi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVp
Z2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFy
dFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUg
c2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAg
ICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0i
aGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291
cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0
aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDkyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00OTItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3
ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDkyLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0
dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5k
b3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTIuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTIu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAz
MDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92
ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAg
ICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZl
cnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAg
ICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJs
b2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAg
ICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9s
bFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQu
b2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLngg
KyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0
aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAg
ICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisK
KyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAg
ICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisK
KyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBw
cmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYg
ZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwg
KyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290
ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlm
ICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0s
IDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAg
ICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAg
ICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFy
Z2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAw
LjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZ
ID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7
IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0Nv
bXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJl
bCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlk
ZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBp
ZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWln
aHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7
CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRX
aWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAg
aWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAg
cG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFj
dHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsg
IjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHgg
PSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJl
bCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFt
ZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAg
ICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2lu
ZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsK
KworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBp
ZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2lu
ZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAn
Y29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxF
dmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxH
bGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJv
bkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRo
OiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBm
ZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZy
YW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4
OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGlj
YWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2Fs
LW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9p
ZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9k
aXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS00OTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5My1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhi
ZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJv
cGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQg
c25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMu
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ5My5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5My5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNDkzLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5o
b3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAg
ICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlk
ZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAg
bWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5
IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0
OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZv
cmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAg
ICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlv
bi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1l
bnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQp
IHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zm
c2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0
aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0g
ZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVy
biBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
U25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAg
dmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAg
YWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAg
Ly8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0
aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAg
YmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQg
IiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAg
ICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0K
KworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRh
cmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAw
OworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBk
eCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
ICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3Np
dGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAg
ICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRh
cmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3Np
dGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJl
IHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0
aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3
aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZh
ciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChn
bGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9z
aXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJk
aXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVj
dGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0
YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxH
bGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAg
ICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9u
dGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRp
b25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5
ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAg
ICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5j
bGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdi
ZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
b25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikg
eworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAg
ICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9y
aXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+Cisg
ICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+Cisg
ICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3Mg
cHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6
b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9y
aXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBw
eCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xh
c3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0
bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAg
ICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Jv
ZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAt
aWZyYW1lLTQ5NC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk0LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5NC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAor
VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJh
bWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBz
bmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZl
cnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNDk0Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS00OTQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxs
ZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVp
Z2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAg
ICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAg
ICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4K
KyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAg
ICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9u
IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50
Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7
CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAg
ICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zm
c2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1l
bnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNl
dFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExh
YmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNo
b3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisg
ICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3Bl
ciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xs
UG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNu
YXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAK
KyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1
bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAg
ICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFs
VGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9
IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qg
b3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVy
biBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0
YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNb
dGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9z
aXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVk
UG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhl
IG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBl
Y3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0
RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVj
dGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9
LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9
IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
ID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBv
c1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOwor
ICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJh
bWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVn
aW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwg
J25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+Cisg
ICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxk
aXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBp
ZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIg
Y2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5m
cmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxH
YWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJo
ZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk1LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJk
MDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNDk1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRo
ZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Ny
b2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6
b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6
CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTUuaHRt
bCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00OTUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5NS5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTYtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ5Ni1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2Jm
ZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTYt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFw
IGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0
IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhv
bm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5Ni5odG1sIGIvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTQ5Ni5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk2Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5Ny1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk3
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUz
YjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5Ny1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3Jr
cyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2Fs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBv
aW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk3Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3
aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk3Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNDk4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTgtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0
IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGlu
IGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9p
bnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS00OTguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00OTguaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJl
MTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTQ5OC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS00
OTktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5OS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS00OTktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAK
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTQ5
OS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTQ5OS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4
MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNDk5
Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFy
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAg
ICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRp
b24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUg
dGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNu
YXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0
aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBv
c2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48
L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJo
b3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRt
bCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNi
ZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNS5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNTAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUwLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS01MC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUwLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS01MC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01
MDAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUwMC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS01MDAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRo
YXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAK
K1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
aG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVk
IHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRh
cmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUw
MC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTUwMC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4
MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTAw
Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFy
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAg
ICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRp
b24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUg
dGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNu
YXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0
aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBv
c2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48
L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJo
b3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRt
bCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUxLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS01MS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVj
M2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01
MS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTEuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS01MS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTEuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUyLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jp
em9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS01Mi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS01Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS01My1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNTMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTUzLmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNTMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTUz
Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFy
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAg
ICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRp
b24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUg
dGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNu
YXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0
aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBv
c2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48
L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJo
b3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRt
bCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS01NC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVj
M2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01
NC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTQuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS01NC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTQuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU1LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU1LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jp
em9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS01NS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU1Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS01NS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS01Ni1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNTYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTU2Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNTYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU2
Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFy
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAg
ICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRp
b24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUg
dGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNu
YXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0
aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBv
c2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48
L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJo
b3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRt
bCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU3LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS01Ny1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVj
M2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS01
Ny1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwt
c25hcCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xp
ZGUgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
CitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTcuaHRtbCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS01Ny5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVh
MmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTcuaHRtbApAQCAtMCwwICsxLDE2
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxl
PgorICAgICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0
aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IC52ZXJ0aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAg
ICAgICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAg
ICAgICAgb3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAg
ICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAg
ICAgICAgICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBw
b3NpdGlvbi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVt
ZW50Lm9mZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlv
bi54ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsK
KyAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiYm9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rp
b24gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAg
ICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwp
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0
OworCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0
aGUgcHJldmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBk
aXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExh
YmVsICsiLiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBzbmFwIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFt
ZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAg
ICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxU
b3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFt
ZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54
ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0
UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBv
c1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxp
bmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9w
OworICAgICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50
SGVpZ2h0OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykgeworICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxk
IGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAg
ICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAg
ICAgIHRlc3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBz
bmFwIHBvaW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIg
KyBhY3R1YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5k
b3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFy
IGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Ny
b2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAg
ICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
ZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhk
eCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25l
JywgJ2NvbnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJl
dHVybiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldo
ZWVsRXZlbnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Ny
b2xsR2xpZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3
aWR0aDogMzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNu
YXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBz
cmM9InJlc291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZl
cnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0
aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAg
IDwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU4LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMz
OGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU4LWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jp
em9udGFsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5n
IHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVk
IHNuYXAgcG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFw
L3Njcm9sbC1zbmFwLWlmcmFtZS01OC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU4Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Nj
cm9sbC1zbmFwLWlmcmFtZS01OC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9y
aXpvbnRhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDog
MzAwcHg7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBh
dXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAg
ICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0
SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGU7CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAg
ICAgZnVuY3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24u
eCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50
Lm9mZnNldFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlv
bi55ICsgZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlm
IChlbGVtZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVs
ZW1lbnQub2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4g
cG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNu
YXAodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBp
ZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8v
IFRoZSBkaXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlv
bgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVm
b3JlU25hcCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJh
Y2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIg
KyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgZWxzZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJn
ZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsK
KyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHgg
PSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9z
aXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAg
ICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRp
b24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAg
ICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJn
ZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRp
b24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3
ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlv
bigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkK
KyAgICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFy
IGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIg
ZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAg
ICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAg
ICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xp
ZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0
aW9uID09IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2
IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3Rl
ZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsK
KworICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFy
Z2V0TGFiZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xp
ZGVUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGlu
ZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFi
ZWxdLmRvY3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAg
ICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUds
aWRlID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9u
QmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
bm9uZScsICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxB
ZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xs
R2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9u
TG9hZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAg
ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6
b250YWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8
L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAg
ICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAg
ICAgICAgICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHBy
b3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9u
dGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6
b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgi
PjwvaWZyYW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNz
PSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1s
IiAgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5
PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS01OS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNTktZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNTktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4K
KyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNT
IGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1l
LTU5Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNTkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgw
ODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTU5
Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAw
cHg7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3
aWR0aDogMzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDog
aGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAg
ICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwor
ICAgICAgICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFy
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IHBvc2l0aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRM
ZWZ0OworICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAg
ICAgICAgICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBw
b3NpdGlvbi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7
CisgICAgICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNl
dFBhcmVudC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAg
fQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAn
aG9yaXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVUYXJnZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2
ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAo
YWN0dWFsUG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAg
ICAgICAgIHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRp
b24gZm9yICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4iKTsKKworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0
JykKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRl
c3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAg
ICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBz
Y3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAg
ICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJn
ZXRMYWJlbCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5
ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBp
ZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5k
b3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NY
ID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAg
ICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRv
KHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUg
dGhlIGlGcmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tG
b3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBjaGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBp
ZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0g
aWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9
PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNu
YXAgcG9pbnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3Np
dGlvbikKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3
aW5kb3cuIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgi
ZGl2IGRpZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0
aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRl
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsK
KyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNj
cm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFt
ZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwg
MCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywg
J2VuZCcpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxl
dGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7
IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDAp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVh
ZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBv
c2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3Rz
IHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48
L2Rpdj4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJo
b3Jpem9udGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRt
bCIgc3R5bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAg
ICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAz
MDBweDsgd2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNi
ZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAg
ZmVhdHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUg
Zm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9u
b3JlZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNi5odG1sIGIvTGF5b3V0VGVzdHMv
dGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNjAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYwLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS02MC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYwLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS02MC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02
MS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNjEtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYxLmh0
bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNjEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYxLmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYyLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS02Mi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02Mi1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjIuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02Mi5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNjMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS02My5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTYzLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS02My5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02
NC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNjQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY0Lmh0
bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNjQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY0Lmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY1LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS02NS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02NS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjUuaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02NS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNjYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY2LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS02Ni5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY2Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS02Ni5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02
Ny1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNjctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rl
c3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY3Lmh0
bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtNjcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFh
OGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY3Lmh0bWwK
QEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+Cisg
ICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDog
MzAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVu
OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFy
Z2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAg
IDxzY3JpcHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB2YXIgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0
aW9uID0ge307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0Owor
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAg
ICB3aGlsZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi54ID0gcG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KHRhcmdldExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpv
bnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJn
ZXQuc2Nyb2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFw
cGVkIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFs
UG9zaXRpb24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9y
ICIgKyB0YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsK
KworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAg
ICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3Zl
cnRpY2FsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAg
ICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxT
bmFwVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAg
ICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJl
bCk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVU
YXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29y
ZGluYXRlcyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2lu
ZG93UG9zaXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAg
ICAgIHZhciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0
UG9zWCwgc3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlG
cmFtZQorICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50
U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdj
aGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2Fs
bEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3Jv
bGxTbmFwKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVC
b2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1l
VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBU
aGUgZGl2IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9p
bnQuCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikK
KyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cu
Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3QgaG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsg
IiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAg
ICAgICAgICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExl
ZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHku
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2Vu
ZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1
bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vbml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAg
ICA8Ym9keSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQg
dGhlIHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4K
KyAgICAgICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9u
dGFsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
aWZyYW1lIGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY4LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS02OC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAx
ZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02OC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBn
bGlkZSBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2lu
ZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9y
IHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGlu
Zy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjguaHRtbCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS02OC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9z
Y3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNjguaHRtbApAQCAtMCwwICsxLDE2MyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAg
ICAgICAgICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAw
cHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy15OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAg
ICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0
aWNhbEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAg
ICAgICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9j
azsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAg
b3ZlcmZsb3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
d2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwOworCisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAg
ICAgIHBvc2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlv
bi55ID0gZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9m
ZnNldFBhcmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlv
bi55ID0gcG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAg
ICAgICAgICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgi
Ym9keSIpWzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAg
IGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hl
Y2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
aWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAg
ICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisg
ICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJl
dmlvdXMgcG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3Jv
bGxQb3NpdGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRp
ZCBub3Qgc25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsi
LiBFeHBlY3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFw
IGZvciAiICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdl
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAg
IHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7Cisg
ICAgICAgICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFy
IHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdl
dCk7CisKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41
ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9
IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAv
LyBNYWtlIHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxC
eVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21w
bGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAg
ICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAg
ICAgICAgICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0
OworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0Jykgewor
ICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0Owor
ICAgICAgICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUg
c2Nyb2xsZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlm
IChhY3R1YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRl
c3RQYXNzZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBv
aW50cy4gRXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1
YWxQb3NpdGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9s
bFNuYXBUZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHNjcm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJh
bWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0g
MDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9z
aXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAg
ICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVT
Y3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHks
ICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2Nv
bnRpbnVlJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBj
aGVja0ZvclNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2
ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZl
bnRzKCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xp
ZGVUZXN0KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25M
b2FkKCk7Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDog
MzAwcHg7Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVh
dHVyZSB3b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFt
ZSBpZD0iaG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJl
c291cmNlcy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsg
d2lkdGg6IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2Fs
VGFyZ2V0IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1t
YWluZnJhbWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2
PgorICAgIDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtNjktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY5LWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE0IEBACitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFs
VGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAg
cG9pbnRzLgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQ
QVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9s
bC1zbmFwLWlmcmFtZS02OS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTY5Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgy
ZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS02OS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRh
bEdhbGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAg
ICBoZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjog
MnB4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOwor
ICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0
eWxlPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7
CisgICAgICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVu
Y3Rpb24gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVs
ZW1lbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNl
dFRvcDsKKworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVu
dC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsg
ZWxlbWVudC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVt
ZW50ID09IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQu
b2Zmc2V0UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRp
b247CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFy
Z2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFy
Z2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBv
c2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBk
aXYgc2hvdWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAg
ICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25h
cCkKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8g
cHJvcGVyIGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9y
aXpvbnRhbFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsg
c2Nyb2xsR2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxz
ZSAgIAorICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJl
bCArICI6Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAg
ICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25C
ZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9
IC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBs
b2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAg
dmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xp
ZW50V2lkdGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSAr
IDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUg
anVzdCBvdXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7
CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50
dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hh
bmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsg
cmV0dXJuIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAg
ICAgeworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVh
bFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0
ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAo
dGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0
byB0aGUgbmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09
IGV4cGVjdGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9s
bGVkIHRvIG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsg
ZXhwZWN0ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAg
ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFi
ZWwpIH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3Jv
bGwtc25hcCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRv
Y3VtZW50LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFy
IGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0g
aWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3Jl
R2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScs
ICdiZWdpbicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnbm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNj
cm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUo
dGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgICAgICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAg
ICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxU
YXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3Njcmlw
dD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8
ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAg
ICAgPGRpdj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5
IGluIGlmcmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFy
Z2V0IiBjbGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwt
bWFpbmZyYW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZy
YW1lPgorICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0
aWNhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5
bGU9ImhlaWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9s
bC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWUy
ZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNu
YXAtaWZyYW1lLTctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhl
IHNjcm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9s
bC1zbmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5l
eHQgd2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoK
K1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQt
ZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcuaHRtbCBi
L0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1z
bmFwLWlmcmFtZS03Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkxYThiY2Qy
MzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03Lmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcwLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS03MC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03MC1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzAuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03MC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzAuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNzEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcxLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcxLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS03MS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcxLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS03MS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03Mi1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNzItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNzItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcyLmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNzIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIz
NDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTcyLmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTczLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS03My1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03My1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzMuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03My5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzMuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNzQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc0LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS03NC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS03NC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03NS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNzUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNzUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc1Lmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNzUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIz
NDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc1Lmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc2LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS03Ni1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03Ni1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzYuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03Ni5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzYuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtNzctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc3LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc3LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBA
CitUZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRz
LgorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3Ig
dmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFw
LWlmcmFtZS03Ny5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc3Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3
MWQ4Zjg4MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS03Ny5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxl
cnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWln
aHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4Owor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAg
ICAgICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJm
bG93LXg6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAg
ICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgor
ICAgICAgICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRy
dWU7CisKKyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAg
ICAgIHZhciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHZhciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQu
b2Zmc2V0TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsK
KworICAgICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRMZWZ0OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09
IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0
UGFyZW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247Cisg
ICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFi
ZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFi
ZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9u
ID0gaWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hv
dWxkIGhhdmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAg
ICAgaWYgKGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVy
IGxvY2F0aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQ
b3NpdGlvbkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25h
cCBwb2ludHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xs
R2xpZGVUZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAor
ICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6
Iik7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQodGFyZ2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAg
IHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxU
YXJnZXQnKSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVT
bmFwID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlv
bkluV2luZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0
YXJ0UG9zWCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lk
dGg7CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAq
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZU1vdmVUbyhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBv
dXRzaWRlIHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFz
ZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcs
ICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVs
QW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJu
IGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgewor
ICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRh
cmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0
YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0
aW9uID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3Np
dGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9z
aXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUg
bmV4dCBzbmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVj
dGVkUG9zaXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRv
IG5leHQgd2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0
ZWRQb3NpdGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0s
IDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdl
dExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25h
cCBnbGlkZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50
LmJvZHk7CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0g
MDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1l
Qm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUg
PSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdp
bicpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
bm9uZScsICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGlu
Z0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpOyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQn
KSB9LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAg
ICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0
eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRp
dj5UZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlm
cmFtZXMuPC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBj
bGFzcz0iaG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZy
YW1lLmh0bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdh
bGxlcnkiIHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03OC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtNzgtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2
NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtNzgtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcg
c2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxl
ZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIGdsaWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc4Lmh0bWwgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtNzguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIz
NDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc4Lmh0bWwKQEAgLTAs
MCArMSwxNjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAg
IDxzdHlsZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAg
ICAgd2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7
CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAg
ICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAy
cHg7CisgICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQ+CisgICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0g
e307CisgICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGls
ZSAoZWxlbWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0g
cG9zaXRpb24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAg
ICAgICAgcG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdl
dExhYmVsKTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRh
cmdldCcpCisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Ny
b2xsTGVmdDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJh
Y2sgdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRp
b24gIT0gZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0
YXJnZXRMYWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAg
ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2Fs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZh
ciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7Cisg
CisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAg
ICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQu
c2Nyb2xsVG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRl
cyhpZnJhbWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9z
aXRpb24ueCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZh
ciBzdGFydFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwg
c3RhcnRQb3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2Vk
JywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygw
LCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVy
U2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFw
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZy
YW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAg
ICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVu
dC5ib2R5OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNj
cm9sbFRvcDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0
LmNsaWVudEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRh
bFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHku
c2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2
IHNob3VsZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisg
ICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAg
ICAgICAgICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
aG9ub3Igc25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0
IGdvdCAiICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5
ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAg
ICAgIHZhciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlm
cmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7Cisg
ICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnbm9uZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9u
KCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
bml0b3JXaGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7IHNjcm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9k
eSBvbmxvYWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxh
dGl2ZTsgd2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNj
cm9sbC1zbmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAg
ICAgICAgIDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2Fs
bGVyeSIgc3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9Imhl
aWdodDogMzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1l
IGlkPSJ2ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJj
ZXMvdmVydGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
ICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTc5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS03OS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4
MjQ1M2IzMzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03OS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBm
b3IgaG9yaXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93Lgor
VGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
aG9ub3JlZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRp
Y2FsVGFyZ2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNj
cm9sbC1zbmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3Jv
bGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzkuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS03OS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtNzkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAg
ICAgLmhvcml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7Cisg
ICAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15
OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAg
ICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdh
bGxlcnkgeworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBo
ZWlnaHQ6IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAg
ICAgICAgICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZs
b3cteTogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOwor
CisgICAgICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBv
c2l0aW9uLnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0g
ZWxlbWVudC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBh
cmVudCkgeworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVu
dC5vZmZzZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0g
cG9zaXRpb24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAg
ICAgICBpZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIp
WzBdKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1l
bnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JT
Y3JvbGxTbmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1l
VGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAg
ICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAg
ICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAg
ICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMg
cG9zaXRpb24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3Np
dGlvbkJlZm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qg
c25hcCBiYWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBl
Y3RlZCAiICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0
TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAi
ICsgdGFyZ2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBk
eCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExh
YmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNj
cm9sbFBvc2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAg
ICAgICAgICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRv
d1Bvc2l0aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisK
KyAgICAgICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZy
YW1lVGFyZ2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRv
d1Bvc2l0aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtl
IHN1cmUgd2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVn
YW4nLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhX
aGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMo
ZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0
TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9k
eSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAg
ICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAg
ICAgdmFyIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAg
ICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAg
ICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAg
ICAgICAgICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xs
ZWQgKGdsaWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1
YWxQb3NpdGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNz
ZWQoImRpdiBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4g
RXhwZWN0ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3Np
dGlvbik7CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBU
ZXN0KHRhcmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNj
cm9sbEdsaWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWco
IlRlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3Rh
cmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAg
ICAgICAgICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25C
ZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9
IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQ
b3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFu
Z2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVl
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0Zv
clNjcm9sbEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvbkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7
CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0
KCdob3Jpem9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7
Ij4KKyAgICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7
Ij4KKyAgICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3
b3JrcyBwcm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0i
aG9yaXpvbnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNl
cy9ob3Jpem9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6
IDMwMHB4Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0
IiBjbGFzcz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJh
bWUuaHRtbCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgor
ICAgICAgICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAg
IDwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtOC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Nj
cm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDliZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1z
bmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitU
ZXN0cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFt
ZXMuCisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgor
VGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBz
Y3JvbGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVy
dGljYWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlm
cmFtZS04Lmh0bWwgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwt
c25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4MmUxOWY1NzFkOGY4
ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
OC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04MC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtODAtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
ODAtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgwLmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtODAuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZl
YTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgwLmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgxLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04MS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04MS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtODEuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04MS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtODEuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAg
ICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVu
dC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkg
eworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRp
b24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRp
b24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBi
YWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAi
ICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGds
aWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEds
aWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jp
em9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAg
ICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpv
bnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jp
em9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFz
cz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRt
bCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtODItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgyLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTgyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS04Mi5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04
Mi5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04My1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtODMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
ODMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgzLmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtODMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZl
YTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTgzLmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04NC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04NC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtODQuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04NC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtODQuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAg
ICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVu
dC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkg
eworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRp
b24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRp
b24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBi
YWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAi
ICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGds
aWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEds
aWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jp
em9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAg
ICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpv
bnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jp
em9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFz
cz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRt
bCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtODUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg1LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTg1LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS04NS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04
NS5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04Ni1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtODYtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
ODYtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg2Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtODYuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZl
YTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg2Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg3LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04Ny1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2Iz
MzhiZDliZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04Ny1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9y
aXpvbnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGlu
ZyBzY3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3Jl
ZCBzbmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFy
Z2V0OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1z
bmFwIHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50
cy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25h
cC9zY3JvbGwtc25hcC1pZnJhbWUtODcuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcv
c2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04Ny5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE4MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtODcuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhv
cml6b250YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRk
ZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBt
YXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkg
eworICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6
IDMwMHB4OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAg
ICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTog
YXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlOworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAg
ICAgIGZ1bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAg
ICB7CisgICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9u
LnggPSBlbGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVu
dC5vZmZzZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkg
eworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRp
b24ueSArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBl
bGVtZW50Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJu
IHBvc2l0aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxT
bmFwKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2
YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAg
aWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBh
Y3R1YWxQb3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAv
LyBUaGUgZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRp
b24KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJl
Zm9yZVNuYXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBi
YWNrIHRvIHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAi
ICsgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9z
aXRpb24pOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBob25vcmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAg
ICAgIGVsc2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7
CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFy
Z2V0TGFiZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7
CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09
ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4
ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBv
c2l0aW9uQmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAg
ICAgZHkgPSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0
aW9uID0gbG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAg
ICAgICAgIHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFy
Z2V0LmNsaWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0
aW9uLnkgKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUg
d2UgYXJlIGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAn
bm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFu
ZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3Jv
bGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rp
b24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdp
bmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZh
ciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFy
IGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAg
ICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAg
ICAgIGV4cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGds
aWRlZCkgdG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3Np
dGlvbiA9PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRp
diBzY3JvbGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0
ZWQgIiArIGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7
CisKKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRh
cmdldExhYmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEds
aWRlVGVzdCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rp
bmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExh
YmVsXS5kb2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAg
ICAgIHZhciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250
YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVH
bGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlv
bkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2Jl
Z2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRo
V2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwg
J25vbmUnLCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlX
aXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxs
QWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBv
bkxvYWQoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAg
ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jp
em9udGFsVGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
PC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAg
ICAgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAg
ICAgICAgICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBw
cm9wZXJseSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpv
bnRhbFRhcmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jp
em9udGFsLW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFz
cz0idmVydGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRt
bCIgIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1p
ZnJhbWUtODgtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg4LWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTg4LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
CisgCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFT
UyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAg
Zm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVz
dGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGlj
YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFt
ZS04OC5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNu
YXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4
MDgwYzkxYThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04
OC5odG1sCkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMw
MHB4OworICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAg
d2lkdGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6
IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAg
ICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAg
ICA8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgICAgICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisK
KyAgICAgICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZh
ciBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0
TGVmdDsKKyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAg
ICAgICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0
OworICAgICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZz
ZXRQYXJlbnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0g
J2hvcml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZy
YW1lVGFyZ2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhh
dmUgc25hcHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYg
KGFjdHVhbFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0
aW9uIGZvciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlv
bkJlZm9yZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2lu
dHMuIik7CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpCisgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVU
ZXN0KCd2ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAg
ICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
c2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVn
KCJUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7Cisg
ICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFy
Z2V0TGFiZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBk
eSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQn
KSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0g
aWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2lu
ZG93Q29vcmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9z
WCA9IHdpbmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7Cisg
ICAgICAgICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVU
byhzdGFydFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRl
IHRoZSBpRnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgs
IGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25l
Jyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9t
ZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNr
Rm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExh
YmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRM
YWJlbF0uZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0g
aWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9
IGlmcmFtZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwg
PT0gJ2hvcml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24g
PSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlv
biA9IGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBz
bmFwIHBvaW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9z
aXRpb24pCisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQg
d2luZG93LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3Np
dGlvbiArICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVs
KQorICAgICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlk
ZSBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2
YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7
CisgCisgICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAg
ICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAg
ICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5z
Y3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJh
bWVCb2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAg
ICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhh
c2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAs
IDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOwor
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVt
UGhhc2VzKGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScs
ICdlbmQnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBs
ZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwp
OyB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBl
dmVudFNlbmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAw
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0
cyB0aGF0IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMu
PC9kaXY+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0i
aG9yaXpvbnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0
bWwiIHN0eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAg
ICAgICAgPGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnki
IHNyYz0icmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdp
bmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS04OS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtODktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJl
YzNiZmUwMWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
ODktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xs
LXNuYXAgZ2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBu
ZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdl
dDoKK1BBU1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGds
aWRlIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LgorVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2
IGhvbm9yZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9z
Y3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJh
bWUtODkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZl
YTJmZTYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTg5Lmh0bWwKQEAgLTAsMCArMSwx
NjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHls
ZT4KKyAgICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lk
dGg6IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgb3ZlcmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87
CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAudmVydGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAg
ICAgICAgIG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7Cisg
ICAgICAgICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307Cisg
ICAgICAgICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAg
cG9zaXRpb24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxl
bWVudC5vZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRp
b24ueCArIGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAg
cG9zaXRpb24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7
CisgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIGNoZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVs
KTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9s
bFRvcDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcp
CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVm
dDsKKworICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8g
dGhlIHByZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0g
ZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImRpdiBkaWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRM
YWJlbCArIi4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1
dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAg
ICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0
JykgfSwgMCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNU
ZXN0KCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJn
ZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNu
YXAgc25hcCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJh
bWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAg
ICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAg
IGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xs
VG9wOworICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZhciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJh
bWVUYXJnZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24u
eCArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFy
dFBvc1kgPSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQ
b3NZKTsgLy8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
U2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25v
bmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAn
ZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xs
aW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdl
dExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9s
bEdsaWRlKHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFy
Z2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAg
dmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5
OworCisgICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRv
cDsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVu
dEhlaWdodDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdl
dCcpIHsKKyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xs
TGVmdDsKKyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3Vs
ZCBoYXZlIHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAg
ICAgICBpZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Ig
c25hcCBwb2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAi
ICsgYWN0dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2lu
ZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZh
ciBkeCA9IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdl
dExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNj
cm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAg
ICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
aWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRl
ci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdl
ZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
ZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9u
ZScsICdjb250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyBy
ZXR1cm4gY2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisK
KyAgICAgICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdp
bmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JX
aGVlbEV2ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNj
cm9sbEdsaWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxv
YWQ9Im9uTG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsg
d2lkdGg6IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1z
bmFwIGZlYXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAg
IDxpZnJhbWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIg
c3JjPSJyZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDog
MzAwcHg7IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2
ZXJ0aWNhbFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVy
dGljYWwtbWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4
Ij48L2lmcmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAg
ICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xs
LXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTktZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUwMWQ3ZTgwODI0NTNiMzM4
YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9s
bGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9w
ZXJseSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpv
bnRhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBz
Y3JvbGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBz
bmFwIHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0
OgorUEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFw
IHNuYXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4K
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9z
Y3JvbGwtc25hcC1pZnJhbWUtOS5odG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3Jv
bGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
ODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYwCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTkuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
OTAtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkwLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTkwLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05MC5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTkwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkx
YThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05MC5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05MS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtOTEtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTEtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkxLmh0bWwgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTEu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkxLmh0bWwKQEAgLTAsMCArMSwxNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVy
dGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRp
b24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCAr
Ii4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBw
b2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNh
bFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwt
bWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTkyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05Mi1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDli
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05Mi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtOTIuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05Mi5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtOTIuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
OTMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTkzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTkzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05My5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTkzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkx
YThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05My5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05NC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtOTQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk0Lmh0bWwgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk0Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVy
dGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRp
b24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCAr
Ii4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBw
b2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNh
bFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwt
bWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTk1LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05NS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDli
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05NS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtOTUuaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05NS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtOTUuaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
OTYtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk2LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTk2LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05Ni5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTk2Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkx
YThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05Ni5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05Ny1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25h
cC1pZnJhbWUtOTctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZTJkMDk2NDJiOWJlYzNiZmUw
MWQ3ZTgwODI0NTNiMzM4YmQ5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTctZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQgQEAKK1Rlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy4KKyAKK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAg
Z2xpZGUgZm9yIGhvcml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0byBuZXh0IHdp
bmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgaG9yaXpvbnRhbFRhcmdldDoKK1BB
U1MgZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuCitUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZv
ciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVz
dGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciB2ZXJ0aWNhbFRhcmdldDoKK1BBU1MgZGl2IGhvbm9y
ZWQgc25hcCBwb2ludHMuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1Qg
Q09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk3Lmh0bWwgYi9MYXlvdXRUZXN0cy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUtOTcu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xODJlMTlmNTcxZDhmODgwODBjOTFhOGJjZDIzNDBhNGZlYTJmZTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcv
c2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk3Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzdHlsZT4KKyAg
ICAgICAgICAgIC5ob3Jpem9udGFsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDMw
MHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAgb3Zl
cmZsb3cteTogaGlkZGVuOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGF1dG87CisgICAg
ICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAudmVy
dGljYWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogaGlkZGVuOworICAgICAgICAgICAgICAg
IG92ZXJmbG93LXk6IGF1dG87CisgICAgICAgICAgICAgICAgbWFyZ2luOiAycHg7CisgICAgICAg
ICAgICB9CisgICAgICAgIDwvc3R5bGU+CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAg
IHdpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB2YXIgaWZyYW1lU2Nyb2xs
UG9zaXRpb25CZWZvcmVHbGlkZTsKKyAgICAgICAgdmFyIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcDsKKworICAgICAgICBmdW5jdGlvbiBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0ZXMoZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHBvc2l0aW9uID0ge307CisgICAgICAg
ICAgICBwb3NpdGlvbi54ID0gZWxlbWVudC5vZmZzZXRMZWZ0OworICAgICAgICAgICAgcG9zaXRp
b24ueSA9IGVsZW1lbnQub2Zmc2V0VG9wOworCisgICAgICAgICAgICB3aGlsZSAoZWxlbWVudC5v
ZmZzZXRQYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi54ID0gcG9zaXRpb24ueCAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueSA9IHBvc2l0aW9uLnkgKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRUb3A7CisgICAg
ICAgICAgICAgICAgaWYgKGVsZW1lbnQgPT0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImJvZHkiKVswXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAg
ICBlbGVtZW50ID0gZWxlbWVudC5vZmZzZXRQYXJlbnQ7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNo
ZWNrRm9yU2Nyb2xsU25hcCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFy
IGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKwor
ICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LnNjcm9sbFRvcDsK
KyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisgICAg
ICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKwor
ICAgICAgICAgICAgLy8gVGhlIGRpdiBzaG91bGQgaGF2ZSBzbmFwcGVkIGJhY2sgdG8gdGhlIHBy
ZXZpb3VzIHBvc2l0aW9uCisgICAgICAgICAgICBpZiAoYWN0dWFsUG9zaXRpb24gIT0gZGl2U2Ny
b2xsUG9zaXRpb25CZWZvcmVTbmFwKQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IHNuYXAgYmFjayB0byBwcm9wZXIgbG9jYXRpb24gZm9yICIgKyB0YXJnZXRMYWJlbCAr
Ii4gRXhwZWN0ZWQgIiArIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCArICIsIGJ1dCBnb3Qg
IiArIGFjdHVhbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4iKTsKKworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ3ZlcnRpY2FsVGFyZ2V0JykgfSwg
MCk7CisgICAgICAgICAgICBlbHNlICAgCisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzY3JvbGxTbmFwVGVzdCh0YXJnZXRMYWJl
bCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Nyb2xsLXNuYXAgc25h
cCBmb3IgIiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJn
ZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgCisgICAgICAgICAg
ICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAgICAgIGlmICh0
YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAgICAgICBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsTGVmdDsKKyAgICAg
ICAgICAgICAgICBkeCA9IC0xOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNuYXAgPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOwor
ICAgICAgICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZh
ciB3aW5kb3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJn
ZXQpOworCisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAu
NSAqIGlmcmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kg
PSB3aW5kb3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsg
Ly8gTWFrZSBzdXJlIHdlIGFyZSBqdXN0IG91dHNpZGUgdGhlIGlGcmFtZQorICAgICAgICAgICAg
ZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBk
eSwgJ2JlZ2FuJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xs
QnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsK
KyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1
bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnZW5kZWQn
LCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29t
cGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4gY2hlY2tGb3JTY3JvbGxTbmFwKHRhcmdldExhYmVs
KTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworICAgICAgICAgICAgdmFyIGlm
cmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5kb2N1bWVudC5ib2R5OworCisg
ICAgICAgICAgICB2YXIgYWN0dWFsUG9zaXRpb24gPSBpZnJhbWVCb2R5LnNjcm9sbFRvcDsKKyAg
ICAgICAgICAgIHZhciBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsK
KyAgICAgICAgICAgICAgICBhY3R1YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsK
KyAgICAgICAgICAgICAgICBleHBlY3RlZFBvc2l0aW9uID0gaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZGl2IHNob3VsZCBoYXZl
IHNjcm9sbGVkIChnbGlkZWQpIHRvIHRoZSBuZXh0IHNuYXAgcG9pbnQuCisgICAgICAgICAgICBp
ZiAoYWN0dWFsUG9zaXRpb24gPT0gZXhwZWN0ZWRQb3NpdGlvbikKKyAgICAgICAgICAgICAgICB0
ZXN0UGFzc2VkKCJkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuIik7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3QgaG9ub3Igc25hcCBw
b2ludHMuIEV4cGVjdGVkICIgKyBleHBlY3RlZFBvc2l0aW9uICsgIiwgYnV0IGdvdCAiICsgYWN0
dWFsUG9zaXRpb24pOworCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBzY3Jv
bGxTbmFwVGVzdCh0YXJnZXRMYWJlbCkgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBzY3JvbGxHbGlkZVRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGRlYnVnKCJUZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciAiICsgdGFyZ2V0TGFiZWwgKyAi
OiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKHRhcmdldExhYmVsKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZy
YW1lc1t0YXJnZXRMYWJlbF0uZG9jdW1lbnQuYm9keTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9
IDA7CisgICAgICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVs
ID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBv
c2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAg
ICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWZyYW1l
U2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAg
ICAgICAgICAgIGR5ID0gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciB3aW5k
b3dQb3NpdGlvbiA9IGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhpZnJhbWVUYXJnZXQpOwor
CisgICAgICAgICAgICB2YXIgc3RhcnRQb3NYID0gd2luZG93UG9zaXRpb24ueCArIDAuNSAqIGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIHZhciBzdGFydFBvc1kgPSB3aW5k
b3dQb3NpdGlvbi55ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgICAgICAg
ICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHN0YXJ0UG9zWCwgc3RhcnRQb3NZKTsKKyAgICAg
ICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNl
cyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3Vz
ZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdu
b25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5k
TW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBl
dmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5
LCAnY2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9s
bEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBo
YXNlcyhkeCwgZHksICdub25lJywgJ2JlZ2luJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5t
b3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdj
b250aW51ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVl
bEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdub25lJywgJ2VuZCcpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIuY2FsbEFmdGVyU2Nyb2xsaW5nQ29tcGxldGVzKGZ1bmN0aW9uKCkgeyByZXR1cm4g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAg
ICAgZnVuY3Rpb24gb25Mb2FkKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5l
dmVudFNlbmRlcikgeworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vbml0b3JXaGVlbEV2
ZW50cygpOworICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbEds
aWRlVGVzdCgnaG9yaXpvbnRhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Im9u
TG9hZCgpOyI+CisgICAgICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsgd2lkdGg6
IDMwMHB4OyI+CisgICAgICAgICAgICA8ZGl2PlRlc3RzIHRoYXQgdGhlIHNjcm9sbC1zbmFwIGZl
YXR1cmUgd29ya3MgcHJvcGVybHkgaW4gaWZyYW1lcy48L2Rpdj4KKyAgICAgICAgICAgIDxpZnJh
bWUgaWQ9Imhvcml6b250YWxUYXJnZXQiIGNsYXNzPSJob3Jpem9udGFsR2FsbGVyeSIgc3JjPSJy
ZXNvdXJjZXMvaG9yaXpvbnRhbC1tYWluZnJhbWUuaHRtbCIgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJ2ZXJ0aWNh
bFRhcmdldCIgY2xhc3M9InZlcnRpY2FsR2FsbGVyeSIgc3JjPSJyZXNvdXJjZXMvdmVydGljYWwt
bWFpbmZyYW1lLmh0bWwiICBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAv
c2Nyb2xsLXNuYXAtaWZyYW1lLTk4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3RpbGVkLWRy
YXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05OC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDVlMmQwOTY0MmI5YmVjM2JmZTAxZDdlODA4MjQ1M2IzMzhiZDli
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
L3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05OC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxNCBAQAorVGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLgorIAorVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3IgaG9yaXpvbnRh
bFRhcmdldDoKK1BBU1MgZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93LgorVGVzdGluZyBzY3Jv
bGwtc25hcCBzbmFwIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFw
IHBvaW50cy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgZ2xpZGUgZm9yIHZlcnRpY2FsVGFyZ2V0Ogor
UEFTUyBkaXYgc2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNu
YXAgZm9yIHZlcnRpY2FsVGFyZ2V0OgorUEFTUyBkaXYgaG9ub3JlZCBzbmFwIHBvaW50cy4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3Jv
bGwtc25hcC1pZnJhbWUtOTguaHRtbCBiL0xheW91dFRlc3RzL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05OC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4
MmUxOWY1NzFkOGY4ODA4MGM5MWE4YmNkMjM0MGE0ZmVhMmZlNjAKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwt
c25hcC1pZnJhbWUtOTguaHRtbApAQCAtMCwwICsxLDE2MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgLmhvcml6b250
YWxHYWxsZXJ5IHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMzAwcHg7CisgICAgICAgICAgICAg
ICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBoaWRkZW47Cisg
ICAgICAgICAgICAgICAgb3ZlcmZsb3cteDogYXV0bzsKKyAgICAgICAgICAgICAgICBtYXJnaW46
IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC52ZXJ0aWNhbEdhbGxlcnkgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4
OworICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgICAg
ICBvdmVyZmxvdy14OiBoaWRkZW47CisgICAgICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bzsK
KyAgICAgICAgICAgICAgICBtYXJnaW46IDJweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICAgICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgd2luZG93LmpzVGVzdElzQXN5
bmMgPSB0cnVlOworCisgICAgICAgIHZhciBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRl
OworICAgICAgICB2YXIgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwOworCisgICAgICAgIGZ1
bmN0aW9uIGxvY2F0aW9uSW5XaW5kb3dDb29yZGluYXRlcyhlbGVtZW50KQorICAgICAgICB7Cisg
ICAgICAgICAgICB2YXIgcG9zaXRpb24gPSB7fTsKKyAgICAgICAgICAgIHBvc2l0aW9uLnggPSBl
bGVtZW50Lm9mZnNldExlZnQ7CisgICAgICAgICAgICBwb3NpdGlvbi55ID0gZWxlbWVudC5vZmZz
ZXRUb3A7CisKKyAgICAgICAgICAgIHdoaWxlIChlbGVtZW50Lm9mZnNldFBhcmVudCkgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnggPSBwb3NpdGlvbi54ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0TGVmdDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbi55ID0gcG9zaXRpb24ueSAr
IGVsZW1lbnQub2Zmc2V0UGFyZW50Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBpZiAoZWxl
bWVudCA9PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBlbGVtZW50
Lm9mZnNldFBhcmVudDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHBvc2l0
aW9uOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tGb3JTY3JvbGxTbmFwKHRh
cmdldExhYmVsKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOworCisgICAgICAgICAgICB2YXIgYWN0
dWFsUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuc2Nyb2xsVG9wOworICAgICAgICAgICAgaWYgKHRh
cmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykKKyAgICAgICAgICAgICAgICBhY3R1YWxQ
b3NpdGlvbiA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAvLyBUaGUg
ZGl2IHNob3VsZCBoYXZlIHNuYXBwZWQgYmFjayB0byB0aGUgcHJldmlvdXMgcG9zaXRpb24KKyAg
ICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiAhPSBkaXZTY3JvbGxQb3NpdGlvbkJlZm9yZVNu
YXApCisgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiZGl2IGRpZCBub3Qgc25hcCBiYWNrIHRv
IHByb3BlciBsb2NhdGlvbiBmb3IgIiArIHRhcmdldExhYmVsICsiLiBFeHBlY3RlZCAiICsgZGl2
U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsUG9zaXRpb24p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBob25v
cmVkIHNuYXAgcG9pbnRzLiIpOworCisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
IHNjcm9sbEdsaWRlVGVzdCgndmVydGljYWxUYXJnZXQnKSB9LCAwKTsKKyAgICAgICAgICAgIGVs
c2UgICAKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGZ1bmN0aW9uIHNjcm9sbFNuYXBUZXN0KHRhcmdldExhYmVsKQorICAgICAgICB7CisgICAg
ICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBzbmFwIGZvciAiICsgdGFyZ2V0TGFi
ZWwgKyAiOiIpOworICAgICAgICAgICAgdmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKHRhcmdldExhYmVsKTsKKyAKKyAgICAgICAgICAgIHZhciBkeCA9IDA7CisgICAg
ICAgICAgICB2YXIgZHkgPSAwOworICAgICAgICAgICAgaWYgKHRhcmdldExhYmVsID09ICdob3Jp
em9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9uQmVmb3Jl
U25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRpdlNjcm9sbFBvc2l0aW9u
QmVmb3JlU25hcCA9IGlmcmFtZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkg
PSAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0g
bG9jYXRpb25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAg
IHZhciBzdGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNs
aWVudFdpZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkg
KyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOyAvLyBNYWtlIHN1cmUgd2UgYXJl
IGp1c3Qgb3V0c2lkZSB0aGUgaUZyYW1lCisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNj
cm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScp
OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVu
dHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRT
ZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2No
YW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdp
dGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdlbmRlZCcsICdub25lJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJTY3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7
IHJldHVybiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpOyB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGZ1bmN0aW9uIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZyYW1lQm9keSA9IHdpbmRvdy5m
cmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisKKyAgICAgICAgICAgIHZhciBhY3R1
YWxQb3NpdGlvbiA9IGlmcmFtZUJvZHkuc2Nyb2xsVG9wOworICAgICAgICAgICAgdmFyIGV4cGVj
dGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgaWYg
KHRhcmdldExhYmVsID09ICdob3Jpem9udGFsVGFyZ2V0JykgeworICAgICAgICAgICAgICAgIGFj
dHVhbFBvc2l0aW9uID0gaWZyYW1lQm9keS5zY3JvbGxMZWZ0OworICAgICAgICAgICAgICAgIGV4
cGVjdGVkUG9zaXRpb24gPSBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc2Nyb2xsZWQgKGdsaWRlZCkg
dG8gdGhlIG5leHQgc25hcCBwb2ludC4KKyAgICAgICAgICAgIGlmIChhY3R1YWxQb3NpdGlvbiA9
PSBleHBlY3RlZFBvc2l0aW9uKQorICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoImRpdiBzY3Jv
bGxlZCB0byBuZXh0IHdpbmRvdy4iKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBob25vciBzbmFwIHBvaW50cy4gRXhwZWN0ZWQgIiAr
IGV4cGVjdGVkUG9zaXRpb24gKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisKKyAg
ICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHNjcm9sbFNuYXBUZXN0KHRhcmdldExh
YmVsKSB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNjcm9sbEdsaWRlVGVz
dCh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAgZGVidWcoIlRlc3Rpbmcgc2Ny
b2xsLXNuYXAgZ2xpZGUgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAgICAgICB2
YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFiZWwpOwor
ICAgICAgICAgICAgdmFyIGlmcmFtZUJvZHkgPSB3aW5kb3cuZnJhbWVzW3RhcmdldExhYmVsXS5k
b2N1bWVudC5ib2R5OworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZh
ciBkeSA9IDA7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJn
ZXQnKSB7CisgICAgICAgICAgICAgICAgaWZyYW1lU2Nyb2xsUG9zaXRpb25CZWZvcmVHbGlkZSA9
IGlmcmFtZUJvZHkuc2Nyb2xsTGVmdDsKKyAgICAgICAgICAgICAgICBkeCA9IC0xOworICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9y
ZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICAgICAgZHkgPSAtMTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFyIHdpbmRvd1Bvc2l0aW9uID0gbG9jYXRp
b25JbldpbmRvd0Nvb3JkaW5hdGVzKGlmcmFtZVRhcmdldCk7CisKKyAgICAgICAgICAgIHZhciBz
dGFydFBvc1ggPSB3aW5kb3dQb3NpdGlvbi54ICsgMC41ICogaWZyYW1lVGFyZ2V0LmNsaWVudFdp
ZHRoOworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWSA9IHdpbmRvd1Bvc2l0aW9uLnkgKyAwLjUg
KiBpZnJhbWVUYXJnZXQuY2xpZW50SGVpZ2h0OworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oc3RhcnRQb3NYLCBzdGFydFBvc1kpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIu
bW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2JlZ2FuJywg
J25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxB
bmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwg
ZHksICdjaGFuZ2VkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Ny
b2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdjaGFuZ2VkJywgJ25vbmUn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21l
bnR1bVBoYXNlcygwLCAwLCAnZW5kZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5k
ZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ25vbmUn
LCAnYmVnaW4nKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hl
ZWxBbmRNb21lbnR1bVBoYXNlcyhkeCwgZHksICdub25lJywgJ2NvbnRpbnVlJyk7CisgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMo
MCwgMCwgJ25vbmUnLCAnZW5kJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5jYWxsQWZ0ZXJT
Y3JvbGxpbmdDb21wbGV0ZXMoZnVuY3Rpb24oKSB7IHJldHVybiBjaGVja0ZvclNjcm9sbEdsaWRl
KHRhcmdldExhYmVsKTsgfSk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBvbkxvYWQo
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
ICAgICAgICAgICAgZXZlbnRTZW5kZXIubW9uaXRvcldoZWVsRXZlbnRzKCk7CisgICAgICAgICAg
ICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCdob3Jpem9udGFs
VGFyZ2V0JykgfSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgPC9zY3Jp
cHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0ib25Mb2FkKCk7Ij4KKyAgICAgICAg
PGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMzAwcHg7Ij4KKyAgICAgICAg
ICAgIDxkaXY+VGVzdHMgdGhhdCB0aGUgc2Nyb2xsLXNuYXAgZmVhdHVyZSB3b3JrcyBwcm9wZXJs
eSBpbiBpZnJhbWVzLjwvZGl2PgorICAgICAgICAgICAgPGlmcmFtZSBpZD0iaG9yaXpvbnRhbFRh
cmdldCIgY2xhc3M9Imhvcml6b250YWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy9ob3Jpem9udGFs
LW1haW5mcmFtZS5odG1sIiBzdHlsZT0iaGVpZ2h0OiAzMDBweDsgd2lkdGg6IDMwMHB4Ij48L2lm
cmFtZT4KKyAgICAgICAgICAgIDxpZnJhbWUgaWQ9InZlcnRpY2FsVGFyZ2V0IiBjbGFzcz0idmVy
dGljYWxHYWxsZXJ5IiBzcmM9InJlc291cmNlcy92ZXJ0aWNhbC1tYWluZnJhbWUuaHRtbCIgIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgIDwvYm9keT4KKzwv
aHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1pZnJhbWUt
OTktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Ny
b2xsLXNuYXAvc2Nyb2xsLXNuYXAtaWZyYW1lLTk5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
NWUyZDA5NjQyYjliZWMzYmZlMDFkN2U4MDgyNDUzYjMzOGJkOWJlCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xs
LXNuYXAtaWZyYW1lLTk5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitUZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuCisgCitU
ZXN0aW5nIHNjcm9sbC1zbmFwIGdsaWRlIGZvciBob3Jpem9udGFsVGFyZ2V0OgorUEFTUyBkaXYg
c2Nyb2xsZWQgdG8gbmV4dCB3aW5kb3cuCitUZXN0aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yIGhv
cml6b250YWxUYXJnZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorVGVzdGluZyBz
Y3JvbGwtc25hcCBnbGlkZSBmb3IgdmVydGljYWxUYXJnZXQ6CitQQVNTIGRpdiBzY3JvbGxlZCB0
byBuZXh0IHdpbmRvdy4KK1Rlc3Rpbmcgc2Nyb2xsLXNuYXAgc25hcCBmb3IgdmVydGljYWxUYXJn
ZXQ6CitQQVNTIGRpdiBob25vcmVkIHNuYXAgcG9pbnRzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Rp
bGVkLWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05OS5o
dG1sIGIvTGF5b3V0VGVzdHMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Ny
b2xsLXNuYXAtaWZyYW1lLTk5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTgyZTE5ZjU3MWQ4Zjg4MDgwYzkx
YThiY2QyMzQwYTRmZWEyZmU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3RpbGVk
LWRyYXdpbmcvc2Nyb2xsaW5nL3Njcm9sbC1zbmFwL3Njcm9sbC1zbmFwLWlmcmFtZS05OS5odG1s
CkBAIC0wLDAgKzEsMTYzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgor
ICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAuaG9yaXpvbnRhbEdhbGxlcnkgeworICAgICAg
ICAgICAgICAgIHdpZHRoOiAzMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDMwMHB4Owor
ICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjsKKyAgICAgICAgICAgICAgICBvdmVy
Zmxvdy14OiBhdXRvOworICAgICAgICAgICAgICAgIG1hcmdpbjogMnB4OworICAgICAgICAgICAg
fQorICAgICAgICAgICAgLnZlcnRpY2FsR2FsbGVyeSB7CisgICAgICAgICAgICAgICAgd2lkdGg6
IDMwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICAgICAgICAgICAg
ZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAgICAgICAgIG92ZXJmbG93LXg6IGhpZGRl
bjsKKyAgICAgICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvOworICAgICAgICAgICAgICAgIG1h
cmdpbjogMnB4OworICAgICAgICAgICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2Ny
aXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0PgorICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgdmFyIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGU7CisgICAgICAgIHZhciBkaXZT
Y3JvbGxQb3NpdGlvbkJlZm9yZVNuYXA7CisKKyAgICAgICAgZnVuY3Rpb24gbG9jYXRpb25Jbldp
bmRvd0Nvb3JkaW5hdGVzKGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwb3Np
dGlvbiA9IHt9OworICAgICAgICAgICAgcG9zaXRpb24ueCA9IGVsZW1lbnQub2Zmc2V0TGVmdDsK
KyAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBlbGVtZW50Lm9mZnNldFRvcDsKKworICAgICAgICAg
ICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0UGFyZW50KSB7CisgICAgICAgICAgICAgICAgcG9zaXRp
b24ueCA9IHBvc2l0aW9uLnggKyBlbGVtZW50Lm9mZnNldFBhcmVudC5vZmZzZXRMZWZ0OworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uLnkgPSBwb3NpdGlvbi55ICsgZWxlbWVudC5vZmZzZXRQYXJl
bnQub2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ID09IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF0pCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQub2Zmc2V0UGFyZW50OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjaGVja0ZvclNjcm9sbFNuYXAodGFyZ2V0TGFiZWwpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCh0YXJnZXRMYWJlbCk7CisKKyAgICAgICAgICAgIHZhciBhY3R1YWxQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5zY3JvbGxUb3A7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6
b250YWxUYXJnZXQnKQorICAgICAgICAgICAgICAgIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1lVGFy
Z2V0LnNjcm9sbExlZnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBkaXYgc2hvdWxkIGhhdmUgc25h
cHBlZCBiYWNrIHRvIHRoZSBwcmV2aW91cyBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGFjdHVh
bFBvc2l0aW9uICE9IGRpdlNjcm9sbFBvc2l0aW9uQmVmb3JlU25hcCkKKyAgICAgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJkaXYgZGlkIG5vdCBzbmFwIGJhY2sgdG8gcHJvcGVyIGxvY2F0aW9uIGZv
ciAiICsgdGFyZ2V0TGFiZWwgKyIuIEV4cGVjdGVkICIgKyBkaXZTY3JvbGxQb3NpdGlvbkJlZm9y
ZVNuYXAgKyAiLCBidXQgZ290ICIgKyBhY3R1YWxQb3NpdGlvbik7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IGhvbm9yZWQgc25hcCBwb2ludHMuIik7
CisKKyAgICAgICAgICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpCisg
ICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgc2Nyb2xsR2xpZGVUZXN0KCd2
ZXJ0aWNhbFRhcmdldCcpIH0sIDApOworICAgICAgICAgICAgZWxzZSAgIAorICAgICAgICAgICAg
ICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xs
U25hcFRlc3QodGFyZ2V0TGFiZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlYnVnKCJUZXN0
aW5nIHNjcm9sbC1zbmFwIHNuYXAgZm9yICIgKyB0YXJnZXRMYWJlbCArICI6Iik7CisgICAgICAg
ICAgICB2YXIgaWZyYW1lVGFyZ2V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0TGFi
ZWwpOworIAorICAgICAgICAgICAgdmFyIGR4ID0gMDsKKyAgICAgICAgICAgIHZhciBkeSA9IDA7
CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hvcml6b250YWxUYXJnZXQnKSB7Cisg
ICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1lVGFyZ2V0
LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZHggPSAtMTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgZGl2U2Nyb2xsUG9zaXRpb25CZWZvcmVTbmFwID0gaWZyYW1l
VGFyZ2V0LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29v
cmRpbmF0ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdp
bmRvd1Bvc2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAg
ICAgICB2YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdl
dC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFy
dFBvc1gsIHN0YXJ0UG9zWSk7IC8vIE1ha2Ugc3VyZSB3ZSBhcmUganVzdCBvdXRzaWRlIHRoZSBp
RnJhbWUKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRN
b21lbnR1bVBoYXNlcyhkeCwgZHksICdiZWdhbicsICdub25lJyk7CisgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAn
Y2hhbmdlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5
V2l0aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnY2hhbmdlZCcsICdub25lJyk7Cisg
ICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdoZWVsQW5kTW9tZW50dW1Q
aGFzZXMoMCwgMCwgJ2VuZGVkJywgJ25vbmUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNh
bGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhmdW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Ny
b2xsU25hcCh0YXJnZXRMYWJlbCk7IH0pOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
Y2hlY2tGb3JTY3JvbGxHbGlkZSh0YXJnZXRMYWJlbCkKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIGlmcmFtZVRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRhcmdldExhYmVsKTsK
KyAgICAgICAgICAgIHZhciBpZnJhbWVCb2R5ID0gd2luZG93LmZyYW1lc1t0YXJnZXRMYWJlbF0u
ZG9jdW1lbnQuYm9keTsKKworICAgICAgICAgICAgdmFyIGFjdHVhbFBvc2l0aW9uID0gaWZyYW1l
Qm9keS5zY3JvbGxUb3A7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRQb3NpdGlvbiA9IGlmcmFt
ZVRhcmdldC5jbGllbnRIZWlnaHQ7CisgICAgICAgICAgICBpZiAodGFyZ2V0TGFiZWwgPT0gJ2hv
cml6b250YWxUYXJnZXQnKSB7CisgICAgICAgICAgICAgICAgYWN0dWFsUG9zaXRpb24gPSBpZnJh
bWVCb2R5LnNjcm9sbExlZnQ7CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRQb3NpdGlvbiA9IGlm
cmFtZVRhcmdldC5jbGllbnRXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8g
VGhlIGRpdiBzaG91bGQgaGF2ZSBzY3JvbGxlZCAoZ2xpZGVkKSB0byB0aGUgbmV4dCBzbmFwIHBv
aW50LgorICAgICAgICAgICAgaWYgKGFjdHVhbFBvc2l0aW9uID09IGV4cGVjdGVkUG9zaXRpb24p
CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiZGl2IHNjcm9sbGVkIHRvIG5leHQgd2luZG93
LiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImRpdiBk
aWQgbm90IGhvbm9yIHNuYXAgcG9pbnRzLiBFeHBlY3RlZCAiICsgZXhwZWN0ZWRQb3NpdGlvbiAr
ICIsIGJ1dCBnb3QgIiArIGFjdHVhbFBvc2l0aW9uKTsKKworICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsgc2Nyb2xsU25hcFRlc3QodGFyZ2V0TGFiZWwpIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Nyb2xsR2xpZGVUZXN0KHRhcmdldExhYmVsKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWJ1ZygiVGVzdGluZyBzY3JvbGwtc25hcCBnbGlkZSBmb3Ig
IiArIHRhcmdldExhYmVsICsgIjoiKTsKKyAgICAgICAgICAgIHZhciBpZnJhbWVUYXJnZXQgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCh0YXJnZXRMYWJlbCk7CisgICAgICAgICAgICB2YXIgaWZy
YW1lQm9keSA9IHdpbmRvdy5mcmFtZXNbdGFyZ2V0TGFiZWxdLmRvY3VtZW50LmJvZHk7CisgCisg
ICAgICAgICAgICB2YXIgZHggPSAwOworICAgICAgICAgICAgdmFyIGR5ID0gMDsKKyAgICAgICAg
ICAgIGlmICh0YXJnZXRMYWJlbCA9PSAnaG9yaXpvbnRhbFRhcmdldCcpIHsKKyAgICAgICAgICAg
ICAgICBpZnJhbWVTY3JvbGxQb3NpdGlvbkJlZm9yZUdsaWRlID0gaWZyYW1lQm9keS5zY3JvbGxM
ZWZ0OworICAgICAgICAgICAgICAgIGR4ID0gLTE7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGlmcmFtZVNjcm9sbFBvc2l0aW9uQmVmb3JlR2xpZGUgPSBpZnJhbWVCb2R5
LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICBkeSA9IC0xOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICB2YXIgd2luZG93UG9zaXRpb24gPSBsb2NhdGlvbkluV2luZG93Q29vcmRpbmF0
ZXMoaWZyYW1lVGFyZ2V0KTsKKworICAgICAgICAgICAgdmFyIHN0YXJ0UG9zWCA9IHdpbmRvd1Bv
c2l0aW9uLnggKyAwLjUgKiBpZnJhbWVUYXJnZXQuY2xpZW50V2lkdGg7CisgICAgICAgICAgICB2
YXIgc3RhcnRQb3NZID0gd2luZG93UG9zaXRpb24ueSArIDAuNSAqIGlmcmFtZVRhcmdldC5jbGll
bnRIZWlnaHQ7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyhzdGFydFBvc1gs
IHN0YXJ0UG9zWSk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0aFdo
ZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnYmVnYW4nLCAnbm9uZScpOworICAgICAgICAg
ICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4
LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VT
Y3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9u
ZScpOworICAgICAgICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1v
bWVudHVtUGhhc2VzKGR4LCBkeSwgJ2NoYW5nZWQnLCAnbm9uZScpOworICAgICAgICAgICAgZXZl
bnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2VzKDAsIDAsICdl
bmRlZCcsICdub25lJyk7CisgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVNjcm9sbEJ5V2l0
aFdoZWVsQW5kTW9tZW50dW1QaGFzZXMoZHgsIGR5LCAnbm9uZScsICdiZWdpbicpOworICAgICAg
ICAgICAgZXZlbnRTZW5kZXIubW91c2VTY3JvbGxCeVdpdGhXaGVlbEFuZE1vbWVudHVtUGhhc2Vz
KGR4LCBkeSwgJ25vbmUnLCAnY29udGludWUnKTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1v
dXNlU2Nyb2xsQnlXaXRoV2hlZWxBbmRNb21lbnR1bVBoYXNlcygwLCAwLCAnbm9uZScsICdlbmQn
KTsKKyAgICAgICAgICAgIGV2ZW50U2VuZGVyLmNhbGxBZnRlclNjcm9sbGluZ0NvbXBsZXRlcyhm
dW5jdGlvbigpIHsgcmV0dXJuIGNoZWNrRm9yU2Nyb2xsR2xpZGUodGFyZ2V0TGFiZWwpOyB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9uTG9hZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb25pdG9yV2hlZWxFdmVudHMoKTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeyBzY3JvbGxHbGlkZVRlc3QoJ2hvcml6b250YWxUYXJnZXQnKSB9LCAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHkgb25sb2FkPSJvbkxvYWQoKTsiPgorICAgICAgICA8ZGl2IHN0eWxlPSJwb3NpdGlv
bjogcmVsYXRpdmU7IHdpZHRoOiAzMDBweDsiPgorICAgICAgICAgICAgPGRpdj5UZXN0cyB0aGF0
IHRoZSBzY3JvbGwtc25hcCBmZWF0dXJlIHdvcmtzIHByb3Blcmx5IGluIGlmcmFtZXMuPC9kaXY+
CisgICAgICAgICAgICA8aWZyYW1lIGlkPSJob3Jpem9udGFsVGFyZ2V0IiBjbGFzcz0iaG9yaXpv
bnRhbEdhbGxlcnkiIHNyYz0icmVzb3VyY2VzL2hvcml6b250YWwtbWFpbmZyYW1lLmh0bWwiIHN0
eWxlPSJoZWlnaHQ6IDMwMHB4OyB3aWR0aDogMzAwcHgiPjwvaWZyYW1lPgorICAgICAgICAgICAg
PGlmcmFtZSBpZD0idmVydGljYWxUYXJnZXQiIGNsYXNzPSJ2ZXJ0aWNhbEdhbGxlcnkiIHNyYz0i
cmVzb3VyY2VzL3ZlcnRpY2FsLW1haW5mcmFtZS5odG1sIiAgc3R5bGU9ImhlaWdodDogMzAwcHg7
IHdpZHRoOiAzMDBweCI+PC9pZnJhbWU+CisgICAgICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48
L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394064</attachid>
            <date>2020-03-19 21:22:00 -0700</date>
            <delta_ts>2020-03-19 21:29:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165196-20200319212159.patch</filename>
            <type>text/plain</type>
            <size>6711</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjYyNmE3ZDU5OGIzMDZk
ZTY1MTk0NWJmYmZiMTA0MDJhNDljY2FiNi4uY2I0MTAxZjJmOTQ5NDQzODM2NjljMzdjNzU2OTEx
NmFiYjRjNjdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTAzLTE5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgc2Nyb2xs
IHNuYXBwaW5nIHRlc3RzIGFyZSBzdGlsbCBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlZWxFdmVudFRlc3RNb25pdG9yIGNvdWxkIHRyaWdn
ZXIgdG9vIGVhcmx5IGlmIHRoZSBtYWluIHRocmVhZCB3YXMgYm9nZ2VkIGRvd24sIGRlbGF5aW5n
CisgICAgICAgIHRoZSBmaXJpbmcgb2YgdGhlIG1fdXBkYXRlTm9kZVNjcm9sbFBvc2l0aW9uVGlt
ZXIgc2NoZWR1bGVkIGZyb20KKyAgICAgICAgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6c2No
ZWR1bGVVcGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoKS4KKworICAgICAgICBG
aXggYnkgZXh0ZW5kaW5nIHRoZSBsaWZlIG9mIHRoZSAiU2Nyb2xsaW5nVGhyZWFkU3luY05lZWRl
ZCIgcmVhc29uIHVudGlsIGFmdGVyIHRoZSBtX3VwZGF0ZU5vZGVTY3JvbGxQb3NpdGlvblRpbWVy
CisgICAgICAgIGhhcyBmaXJlZAorCisgICAgICAgIEZpeGVzIGZsYWtpbmVzcyBvZiB0aWxlZC1k
cmF3aW5nL3Njcm9sbGluZy9zY3JvbGwtc25hcC9zY3JvbGwtc25hcC1tYW5kYXRvcnktbWFpbmZy
YW1lLXNsb3ctdmVydGljYWwuaHRtbAorICAgICAgICBhbmQgb3RoZXJzLgorCisgICAgICAgICog
cGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpub3RlU2Nyb2xsaW5nVGhyZWFkU3lu
Y0NvbXBsZXRlRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQ
b3NpdGlvbkFmdGVyQXN5bmNTY3JvbGxUaW1lckZpcmVkKToKKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGVk
U2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwpOgorCiAyMDIwLTAzLTE5
ICBTdW5ueSBIZSAgPHN1bm55X2hlQGFwcGxlLmNvbT4KIAogICAgICAgICBTY3JpcHREaXNhbGxv
d2VkU2NvcGUgc2hvdWxkIGRpc2FibGUgaXNFdmVudEFsbG93ZWRJbk1haW5UaHJlYWQgYW5kIGlz
RXZlbnREaXNwYXRjaEFsbG93ZWRJblN1YnRyZWUgYXNzZXJ0cyBpbiBXZWJLaXQxCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwCmluZGV4IDQ1MjA5OTkxY2M5Y2RjYzRjYTdlMjY4MmFlNDYwOWVhYTNhOTIx
MDUuLmUyMDczYWZjYWNkZjFmZWEzY2RlMzdmMzRlN2JmNTczYWE1ZGQ4YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwCkBAIC0yNjksNiArMjY5LDE2IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6YXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlvbnMoKQogICAgIG1fc2Nyb2xs
aW5nVHJlZS0+YXBwbHlMYXllclBvc2l0aW9ucygpOwogfQogCit2b2lkIEFzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6Om5vdGVTY3JvbGxpbmdUaHJlYWRTeW5jQ29tcGxldGVGb3JOb2RlKFNjcm9s
bGluZ05vZGVJRCBub2RlSUQpCit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGlmIChtX3BhZ2Ug
JiYgbV9wYWdlLT5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKSB7CisgICAgICAgIExPR19XSVRI
X1NUUkVBTShXaGVlbEV2ZW50VGVzdE1vbml0b3IsIHN0cmVhbSA8PCAiICAgICghKSBBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpzY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3lu
Y1Njcm9sbDogUmVtb3ZpbmcgZGVmZXJyYWwgb24gIiA8PCBub2RlSUQgPDwgIiBmb3IgcmVhc29u
ICIgPDwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkKTsK
KyAgICAgICAgbV9wYWdlLT53aGVlbEV2ZW50VGVzdE1vbml0b3IoKS0+cmVtb3ZlRGVmZXJyYWxG
b3JSZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFi
bGVBcmVhSWRlbnRpZmllcj4obm9kZUlEKSwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxp
bmdUaHJlYWRTeW5jTmVlZGVkKTsKKyAgICB9CisjZW5kaWYKK30KKwogdm9pZCBBc3luY1Njcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Nj
cm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3Np
dGlvbiwgY29uc3QgT3B0aW9uYWw8RmxvYXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBT
Y3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24p
CiB7CiAgICAgU2NoZWR1bGVkU2Nyb2xsVXBkYXRlIHNjcm9sbFVwZGF0ZShub2RlSUQsIHNjcm9s
bFBvc2l0aW9uLCBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFj
dGlvbik7CkBAIC0yODQsNiArMjk0LDEwIEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2NoZWR1bGVVcGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoU2NyCiAgICAg
ICAgIG1fdXBkYXRlTm9kZVNjcm9sbFBvc2l0aW9uVGltZXIuc3RvcCgpOwogICAgICAgICB1cGRh
dGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwobV9zY2hlZHVsZWRTY3JvbGxVcGRhdGUu
bm9kZUlELCBtX3NjaGVkdWxlZFNjcm9sbFVwZGF0ZS5zY3JvbGxQb3NpdGlvbiwgbV9zY2hlZHVs
ZWRTY3JvbGxVcGRhdGUubGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbFR5cGU6OlVzZXIsIG1f
c2NoZWR1bGVkU2Nyb2xsVXBkYXRlLnVwZGF0ZUxheWVyUG9zaXRpb25BY3Rpb24pOwogICAgICAg
ICB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwobm9kZUlELCBzY3JvbGxQb3Np
dGlvbiwgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbFR5cGU6OlVzZXIsIHNjcm9sbGluZ0xh
eWVyUG9zaXRpb25BY3Rpb24pOworICAgICAgICAKKyAgICAgICAgaWYgKG1fc2NoZWR1bGVkU2Ny
b2xsVXBkYXRlLm5vZGVJRCAhPSBub2RlSUQpCisgICAgICAgICAgICBub3RlU2Nyb2xsaW5nVGhy
ZWFkU3luY0NvbXBsZXRlRm9yTm9kZShtX3NjaGVkdWxlZFNjcm9sbFVwZGF0ZS5ub2RlSUQpOwor
ICAgICAgICBub3RlU2Nyb2xsaW5nVGhyZWFkU3luY0NvbXBsZXRlRm9yTm9kZShub2RlSUQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yOTQsNiArMzA4LDcgQEAgdm9pZCBBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpzY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3lu
Y1Njcm9sbChTY3IKIHZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xs
UG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsVGltZXJGaXJlZCgpCiB7CiAgICAgdXBkYXRlU2Nyb2xs
UG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKG1fc2NoZWR1bGVkU2Nyb2xsVXBkYXRlLm5vZGVJRCwg
bV9zY2hlZHVsZWRTY3JvbGxVcGRhdGUuc2Nyb2xsUG9zaXRpb24sIG1fc2NoZWR1bGVkU2Nyb2xs
VXBkYXRlLmxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxUeXBlOjpVc2VyLCBtX3NjaGVkdWxl
ZFNjcm9sbFVwZGF0ZS51cGRhdGVMYXllclBvc2l0aW9uQWN0aW9uKTsKKyAgICBub3RlU2Nyb2xs
aW5nVGhyZWFkU3luY0NvbXBsZXRlRm9yTm9kZShtX3NjaGVkdWxlZFNjcm9sbFVwZGF0ZS5ub2Rl
SUQpOwogfQogCiBGcmFtZVZpZXcqIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmll
d0ZvclNjcm9sbGluZ05vZGUoU2Nyb2xsaW5nTm9kZUlEIHNjcm9sbGluZ05vZGVJRCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuaAppbmRleCAxYWIxZjQ1ZGUxNmNlMDQ2MzBiMjIxYzM3OGNiZGQyZDAx
MzEwY2RhLi5hMmVkOGE0MWQ3MjNhNTYwNWM4Y2I5MzhmNjg2ZWRhZTNhODg2MDJkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvci5oCkBAIC0xNDEsNiArMTQxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEV2
ZW50VHJhY2tpbmdSZWdpb25zRGlydHkoKTsKICAgICB2b2lkIHVwZGF0ZUV2ZW50VHJhY2tpbmdS
ZWdpb25zKCk7CiAgICAgCisgICAgdm9pZCBub3RlU2Nyb2xsaW5nVGhyZWFkU3luY0NvbXBsZXRl
Rm9yTm9kZShTY3JvbGxpbmdOb2RlSUQpOworICAgIAogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3
Rm9yU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdOb2RlSUQpIGNvbnN0OwogCiAgICAgVGltZXIgbV91
cGRhdGVOb2RlU2Nyb2xsUG9zaXRpb25UaW1lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCmluZGV4IDkwYTllYzZi
NmRlOWFmN2E2YzdmMTVmZmRjNjE0NDhiODM3M2E0ZTEuLjc2ODY0OWM2OGMxNzQ1NDY2OWNmMGEx
MzY4NDM1ZTRmZWI4NzlmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcApAQCAtMTE2LDE0ICsxMTYsOCBAQCB2
b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3JvbGwoU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZAogICAgICAgICBkZWZlcldoZWVsRXZlbnRUZXN0Q29tcGxl
dGlvbkZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Ny
b2xsYWJsZUFyZWFJZGVudGlmaWVyPihub2RlLnNjcm9sbGluZ05vZGVJRCgpKSwgV2hlZWxFdmVu
dFRlc3RNb25pdG9yOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkKTsKICNlbmRpZgogCi0gICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIG5v
ZGVJRCA9IG5vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3
cG9ydE9yaWdpbiwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiwgbW9uaXRvcmluZ1doZWVs
RXZlbnRzXSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdHJvbmdUaGlzID0gbWFr
ZVJlZigqdGhpcyksIG5vZGVJRCA9IG5vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBvc2l0
aW9uLCBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbl0g
ewogICAgICAgICBzdHJvbmdUaGlzLT5tX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY2hlZHVsZVVw
ZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChub2RlSUQsIHNjcm9sbFBvc2l0aW9u
LCBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7Ci0j
aWYgUExBVEZPUk0oTUFDKQotICAgICAgICBpZiAobW9uaXRvcmluZ1doZWVsRXZlbnRzKQotICAg
ICAgICAgICAgc3Ryb25nVGhpcy0+cmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJy
YWxGb3JSZWFzb24ocmVpbnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9s
bGFibGVBcmVhSWRlbnRpZmllcj4obm9kZUlEKSwgV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3Jv
bGxpbmdUaHJlYWRTeW5jTmVlZGVkKTsKLSNlbHNlCi0gICAgICAgIFVOVVNFRF9QQVJBTShtb25p
dG9yaW5nV2hlZWxFdmVudHMpOwotI2VuZGlmCiAgICAgfSk7CiB9CiAK
</data>
<flag name="review"
          id="409482"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394066</attachid>
            <date>2020-03-19 21:36:42 -0700</date>
            <delta_ts>2020-03-19 23:03:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165196-20200319213641.patch</filename>
            <type>text/plain</type>
            <size>6743</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjYyNmE3ZDU5OGIzMDZk
ZTY1MTk0NWJmYmZiMTA0MDJhNDljY2FiNi4uODU4NTM1MDIzNmNiYWZiNGRkMDU1ZDE1NGE0NjAz
YTU3NTE4MTFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIwLTAzLTE5ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFNvbWUgc2Nyb2xs
IHNuYXBwaW5nIHRlc3RzIGFyZSBzdGlsbCBmbGFreQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vu
c29uIEhzaWVoLgorCisgICAgICAgIFdoZWVsRXZlbnRUZXN0TW9uaXRvciBjb3VsZCB0cmlnZ2Vy
IHRvbyBlYXJseSBpZiB0aGUgbWFpbiB0aHJlYWQgd2FzIGJvZ2dlZCBkb3duLCBkZWxheWluZwor
ICAgICAgICB0aGUgZmlyaW5nIG9mIHRoZSBtX3VwZGF0ZU5vZGVTY3JvbGxQb3NpdGlvblRpbWVy
IHNjaGVkdWxlZCBmcm9tCisgICAgICAgIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjaGVk
dWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKCkuCisKKyAgICAgICAgRml4
IGJ5IGV4dGVuZGluZyB0aGUgbGlmZSBvZiB0aGUgIlNjcm9sbGluZ1RocmVhZFN5bmNOZWVkZWQi
IHJlYXNvbiB1bnRpbCBhZnRlciB0aGUgbV91cGRhdGVOb2RlU2Nyb2xsUG9zaXRpb25UaW1lcgor
ICAgICAgICBoYXMgZmlyZWQKKworICAgICAgICBGaXhlcyBmbGFraW5lc3Mgb2YgdGlsZWQtZHJh
d2luZy9zY3JvbGxpbmcvc2Nyb2xsLXNuYXAvc2Nyb2xsLXNuYXAtbWFuZGF0b3J5LW1haW5mcmFt
ZS1zbG93LXZlcnRpY2FsLmh0bWwKKyAgICAgICAgYW5kIG90aGVycy4KKworICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6bm90ZVNjcm9sbGluZ1RocmVhZFN5bmND
b21wbGV0ZUZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6c2NoZWR1bGVVcGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwpOgorICAg
ICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9z
aXRpb25BZnRlckFzeW5jU2Nyb2xsVGltZXJGaXJlZCk6CisgICAgICAgICogcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRlZFNj
cm9sbGluZ1RyZWU6OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKToKKwogMjAyMC0wMy0xOSAg
U3VubnkgSGUgIDxzdW5ueV9oZUBhcHBsZS5jb20+CiAKICAgICAgICAgU2NyaXB0RGlzYWxsb3dl
ZFNjb3BlIHNob3VsZCBkaXNhYmxlIGlzRXZlbnRBbGxvd2VkSW5NYWluVGhyZWFkIGFuZCBpc0V2
ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlIGFzc2VydHMgaW4gV2ViS2l0MQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcAppbmRleCA0NTIwOTk5MWNjOWNkY2M0Y2E3ZTI2ODJhZTQ2MDllYWEzYTkyMTA1
Li5kNGQwNTgwM2ZkYzhkZTAzZjNmYTZkOTAxMzI3YjhmMGEwYTFhYmQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmNwcApAQCAtMjY5LDYgKzI2OSwxOCBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmFwcGx5U2Nyb2xsaW5nVHJlZUxheWVyUG9zaXRpb25zKCkKICAgICBtX3Njcm9sbGlu
Z1RyZWUtPmFwcGx5TGF5ZXJQb3NpdGlvbnMoKTsKIH0KIAordm9pZCBBc3luY1Njcm9sbGluZ0Nv
b3JkaW5hdG9yOjpub3RlU2Nyb2xsaW5nVGhyZWFkU3luY0NvbXBsZXRlRm9yTm9kZShTY3JvbGxp
bmdOb2RlSUQgbm9kZUlEKQoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBpZiAobV9wYWdlICYm
IG1fcGFnZS0+aXNNb25pdG9yaW5nV2hlZWxFdmVudHMoKSkgeworICAgICAgICBMT0dfV0lUSF9T
VFJFQU0oV2hlZWxFdmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgICAoISkgQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcjo6c2NoZWR1bGVVcGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNT
Y3JvbGw6IFJlbW92aW5nIGRlZmVycmFsIG9uICIgPDwgbm9kZUlEIDw8ICIgZm9yIHJlYXNvbiAi
IDw8IFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCk7Cisg
ICAgICAgIG1fcGFnZS0+d2hlZWxFdmVudFRlc3RNb25pdG9yKCktPnJlbW92ZURlZmVycmFsRm9y
UmVhc29uKHJlaW50ZXJwcmV0X2Nhc3Q8V2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxl
QXJlYUlkZW50aWZpZXI+KG5vZGVJRCksIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsaW5n
VGhyZWFkU3luY05lZWRlZCk7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obm9kZUlE
KTsKKyNlbmRpZgorfQorCiB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjaGVkdWxl
VXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBub2Rl
SUQsIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25zdCBPcHRpb25hbDxGbG9h
dFBvaW50PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rp
b24gc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbikKIHsKICAgICBTY2hlZHVsZWRTY3JvbGxV
cGRhdGUgc2Nyb2xsVXBkYXRlKG5vZGVJRCwgc2Nyb2xsUG9zaXRpb24sIGxheW91dFZpZXdwb3J0
T3JpZ2luLCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKTsKQEAgLTI4NCw2ICsyOTYsMTAg
QEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY2hlZHVsZVVwZGF0ZVNjcm9sbFBv
c2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3IKICAgICAgICAgbV91cGRhdGVOb2RlU2Nyb2xsUG9z
aXRpb25UaW1lci5zdG9wKCk7CiAgICAgICAgIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3lu
Y1Njcm9sbChtX3NjaGVkdWxlZFNjcm9sbFVwZGF0ZS5ub2RlSUQsIG1fc2NoZWR1bGVkU2Nyb2xs
VXBkYXRlLnNjcm9sbFBvc2l0aW9uLCBtX3NjaGVkdWxlZFNjcm9sbFVwZGF0ZS5sYXlvdXRWaWV3
cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZTo6VXNlciwgbV9zY2hlZHVsZWRTY3JvbGxVcGRhdGUudXBk
YXRlTGF5ZXJQb3NpdGlvbkFjdGlvbik7CiAgICAgICAgIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0
ZXJBc3luY1Njcm9sbChub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3cG9ydE9yaWdp
biwgU2Nyb2xsVHlwZTo6VXNlciwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CisgICAg
ICAgIAorICAgICAgICBpZiAobV9zY2hlZHVsZWRTY3JvbGxVcGRhdGUubm9kZUlEICE9IG5vZGVJ
RCkKKyAgICAgICAgICAgIG5vdGVTY3JvbGxpbmdUaHJlYWRTeW5jQ29tcGxldGVGb3JOb2RlKG1f
c2NoZWR1bGVkU2Nyb2xsVXBkYXRlLm5vZGVJRCk7CisgICAgICAgIG5vdGVTY3JvbGxpbmdUaHJl
YWRTeW5jQ29tcGxldGVGb3JOb2RlKG5vZGVJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTI5NCw2ICszMTAsNyBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjaGVk
dWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNjcgogdm9pZCBBc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGxU
aW1lckZpcmVkKCkKIHsKICAgICB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwo
bV9zY2hlZHVsZWRTY3JvbGxVcGRhdGUubm9kZUlELCBtX3NjaGVkdWxlZFNjcm9sbFVwZGF0ZS5z
Y3JvbGxQb3NpdGlvbiwgbV9zY2hlZHVsZWRTY3JvbGxVcGRhdGUubGF5b3V0Vmlld3BvcnRPcmln
aW4sIFNjcm9sbFR5cGU6OlVzZXIsIG1fc2NoZWR1bGVkU2Nyb2xsVXBkYXRlLnVwZGF0ZUxheWVy
UG9zaXRpb25BY3Rpb24pOworICAgIG5vdGVTY3JvbGxpbmdUaHJlYWRTeW5jQ29tcGxldGVGb3JO
b2RlKG1fc2NoZWR1bGVkU2Nyb2xsVXBkYXRlLm5vZGVJRCk7CiB9CiAKIEZyYW1lVmlldyogQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rm9yU2Nyb2xsaW5nTm9kZShTY3JvbGxp
bmdOb2RlSUQgc2Nyb2xsaW5nTm9kZUlEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCmluZGV4IDFh
YjFmNDVkZTE2Y2UwNDYzMGIyMjFjMzc4Y2JkZDJkMDEzMTBjZGEuLmEyZWQ4YTQxZDcyM2E1NjA1
YzhjYjkzOGY2ODZlZGFlM2E4ODYwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTE0MSw2ICsx
NDEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0RXZlbnRUcmFja2luZ1JlZ2lvbnNEaXJ0eSgp
OwogICAgIHZvaWQgdXBkYXRlRXZlbnRUcmFja2luZ1JlZ2lvbnMoKTsKICAgICAKKyAgICB2b2lk
IG5vdGVTY3JvbGxpbmdUaHJlYWRTeW5jQ29tcGxldGVGb3JOb2RlKFNjcm9sbGluZ05vZGVJRCk7
CisgICAgCiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXdGb3JTY3JvbGxpbmdOb2RlKFNjcm9sbGlu
Z05vZGVJRCkgY29uc3Q7CiAKICAgICBUaW1lciBtX3VwZGF0ZU5vZGVTY3JvbGxQb3NpdGlvblRp
bWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRT
Y3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVk
U2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggOTBhOWVjNmI2ZGU5YWY3YTZjN2YxNWZmZGM2MTQ0OGI4
MzczYTRlMS4uNzY4NjQ5YzY4YzE3NDU0NjY5Y2YwYTEzNjg0MzVlNGZlYjg3OWZlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGlu
Z1RyZWUuY3BwCkBAIC0xMTYsMTQgKzExNiw4IEBAIHZvaWQgVGhyZWFkZWRTY3JvbGxpbmdUcmVl
OjpzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbChTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kCiAg
ICAgICAgIGRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVhc29uKHJlaW50ZXJwcmV0
X2Nhc3Q8V2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KG5v
ZGUuc2Nyb2xsaW5nTm9kZUlEKCkpLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGluZ1Ro
cmVhZFN5bmNOZWVkZWQpOwogI2VuZGlmCiAKLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2go
W3N0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbm9kZUlEID0gbm9kZS5zY3JvbGxpbmdOb2Rl
SUQoKSwgc2Nyb2xsUG9zaXRpb24sIGxheW91dFZpZXdwb3J0T3JpZ2luLCBzY3JvbGxpbmdMYXll
clBvc2l0aW9uQWN0aW9uLCBtb25pdG9yaW5nV2hlZWxFdmVudHNdIHsKKyAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goW3N0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbm9kZUlEID0gbm9k
ZS5zY3JvbGxpbmdOb2RlSUQoKSwgc2Nyb2xsUG9zaXRpb24sIGxheW91dFZpZXdwb3J0T3JpZ2lu
LCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uXSB7CiAgICAgICAgIHN0cm9uZ1RoaXMtPm1f
c2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjaGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFz
eW5jU2Nyb2xsKG5vZGVJRCwgc2Nyb2xsUG9zaXRpb24sIGxheW91dFZpZXdwb3J0T3JpZ2luLCBz
Y3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKTsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgICAg
IGlmIChtb25pdG9yaW5nV2hlZWxFdmVudHMpCi0gICAgICAgICAgICBzdHJvbmdUaGlzLT5yZW1v
dmVXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25EZWZlcnJhbEZvclJlYXNvbihyZWludGVycHJldF9j
YXN0PFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPihub2Rl
SUQpLCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGluZ1RocmVhZFN5bmNOZWVkZWQpOwot
I2Vsc2UKLSAgICAgICAgVU5VU0VEX1BBUkFNKG1vbml0b3JpbmdXaGVlbEV2ZW50cyk7Ci0jZW5k
aWYKICAgICB9KTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>